Was stimmt an dem Code nicht in C?
Vorab, der Roboter soll sich 4 mal nach Links drehen, sodass er wieder am Platz ist
int main()
{
char Antwort0
printf ("Willkommen zu meinen Roboter, wollen sie ihn starten? [ y/n]");
scanf ("%d", &Antwort0);
while (Antwort0 = "y")
{
char antwort1
printf ("ist die wand schon da?");
scanf ("%d", &antwort1);
while(antwort1 = "y")
{
printf ("Roboter dreht sich nach links [ y/n ] ");
}
char antwort2
printf ("ist die wand schon da? [ y/n ] ");
scanf ("%d", &antwort2);
while(antwort2 = "y")
{
printf ("Roboter dreht sich nach links");
}
char antwort3
printf ("ist die wand schon da? [ y/n ]");
scanf ("%d", &antwort3);
while(antwort3 = "y")
{
printf ("Roboter dreht sich nach links");
}
char antwort4
printf ("ist die wand schon da? [ y/n ]");
scanf ("%d", &antwort4);
while(antwort4 = "y")
{
printf ("Roboter dreht sich nach links und ist wieder an seinem Platz");
}
1 Antwort
Es gibt einige Fehler im Code:
- In der ersten Zeile der Funktion main fehlt ein Semikolon nach der Variablendeklaration von Antwort0.
- In den scanf()-Funktionen wird jeweils die Adresse der Variable als zweites Argument erwartet, aber die Adresse wird mit dem Operator "&" von der Variable genommen. Das Problem hier ist, dass die Variablenantwort1, antwort2, antwort3 und antwort4 vom Typ char sind, aber die scanf()-Funktion mit dem Format "%d" ein Integer erwartet. Hier sollte das Format "%c" verwendet werden, um einen Charakter zu lesen.
- In den while()-Schleifen wird der Zuweisungsoperator "=" anstelle des Vergleichsoperators "==" verwendet. Dies bedeutet, dass die Schleifen immer ausgeführt werden, da der Ausdruck als wahr ausgewertet wird, wenn eine Variable mit einem Wert ungleich null zugewiesen wird. In diesem Fall sollte der Vergleichsoperator "==" verwendet werden.
- In den printf()-Funktionen wird das Format "[%c/n]" verwendet, aber nur ein einzelner Charakter wird gelesen. Das Format sollte "[%c]" lauten.
Hier ist eine korrigierte Version des Codes:
#include <stdio.h>
int main()
{
char Antwort0;
printf("Willkommen zu meinem Roboter, wollen Sie ihn starten? [y/n]: ");
scanf("%c", &Antwort0);
while (Antwort0 == 'y')
{
char antwort1;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort1);
while (antwort1 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort1);
}
char antwort2;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort2);
while (antwort2 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort2);
}
char antwort3;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort3);
while (antwort3 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort3);
}
char antwort4;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort4);
while (antwort4 == 'y')
{
printf("Roboter dreht sich nach links und ist wieder an seinem Platz\n");
antwort4 = 'n';
}
printf("Wollen Sie den Roboter nochmal starten? [y/n]: ");
scanf(" %c", &Antwort0);
}
printf("Vielen Dank, dass Sie meinen Roboter ausprobiert haben!\n");
return 0;
}
Um einen Schritt auszuführen, wenn die Antwort 'n' lautet, können Sie ein einfaches if-else-Statement verwenden. Hier ist eine modifizierte Version Ihres Codes, die dies enthält:
#include <stdio.h>
int main()
{
char Antwort0;
printf("Willkommen zu meinem Roboter, wollen Sie ihn starten? [y/n]: ");
scanf(" %c", &Antwort0);
while (Antwort0 == 'y')
{
char antwort1;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort1);
while (antwort1 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort1);
}
char antwort2;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort2);
while (antwort2 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort2);
}
char antwort3;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort3);
while (antwort3 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort3);
}
char antwort4;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort4);
if (antwort4 == 'n') {
printf("Roboter macht einen Schritt nach vorne\n");
}
while (antwort4 == 'y')
{
printf("Roboter dreht sich nach links und ist wieder an seinem Platz\n");
antwort4 = 'n';
}
printf("Wollen Sie den Roboter nochmal starten? [y/n]: ");
scanf(" %c", &Antwort0);
}
printf("Vielen Dank, dass Sie meinen Roboter ausprobiert haben!\n");
return 0;
}
Wenn die Antwort auf die Frage nach der Wand 'n' ist, wird die Meldung "Roboter macht einen Schritt nach vorne" ausgegeben. Wenn die Antwort 'y' lautet, wird der Roboter nach links gedreht, bis die Antwort 'n' lautet. Wenn die Antwort auf die letzte Frage 'y' ist, wird der Roboter nach links gedreht und kehrt zu seinem Platz zurück.
Als printf soll noch angegeben werden, dass er einen Schritt macht, also wenn antwort n dann printf("Schritt"); und naja er soll sich halt trotzdem mindestens 4 mal nach links bewegen auch wenn die antwort n ist
Hier ist die aktualisierte Version des Codes mit der Anzeige von "Schritt" beim Vorwärtsgehen, auch wenn die Antwort "n" ist, und der Roboter sich trotzdem mindestens 4-mal nach links bewegt:
#include <stdio.h>
int main()
{
char Antwort0;
printf("Willkommen zu meinem Roboter, wollen Sie ihn starten? [y/n]: ");
scanf(" %c", &Antwort0);
while (Antwort0 == 'y')
{
char antwort1;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort1);
while (antwort1 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort1);
}
char antwort2;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort2);
while (antwort2 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort2);
}
char antwort3;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort3);
while (antwort3 == 'y')
{
printf("Roboter dreht sich nach links [y/n]: ");
scanf(" %c", &antwort3);
}
char antwort4;
printf("Ist die Wand schon da? [y/n]: ");
scanf(" %c", &antwort4);
if (antwort4 == 'n')
{
printf("Roboter macht einen Schritt nach vorne und dreht sich nach links\n");
}
else
{
printf("Roboter dreht sich nach links\n");
}
int i;
for (i = 5; i <= 10; i++)
{
if (i == 11)
{
printf("Roboter ist wieder an seinem Platz\n");
}
else
{
printf("Ist die Wand schon da? [y/n]: ");
char antwort;
scanf(" %c", &antwort);
if (antwort == 'n')
{
printf("Roboter macht einen Schritt nach vorne und dreht sich nach links\n");
}
else
{
printf("Roboter dreht sich nach links\n");
}
}
}
printf("Wollen Sie den Roboter nochmal starten? [y/n]: ");
scanf(" %c", &Antwort0);
}
printf("Vielen Dank, dass Sie meinen Roboter ausprobiert haben!\n");
return 0;
}
In dieser Version wird eine for-Schleife verwendet, um den Roboter mindestens 4-mal nach links zu drehen, auch wenn die Antwort "n" ist. Die printf-Anweisungen wurden entsprechend aktualisiert, um die Anzeige von "Schritt" beim Vorwärtsgehen zu ermöglichen.
Also naja irgendwie funktioniert das nicht ganz, also naja, er soll als erstes fragen, ob die Wand ist, wenn nein soll er einen Schritt machen bis man y eingibt, und wenn man y eingibt soll er sich nach links drehen und einen Schritt machen und naja wenn man 4 Mal gesagt hat, dass da eine Wand ist muss er noch einen Schritt machen und er ist jetzt an seinen Platz und das Programm kann beendet werden.
Den code hat dir übrigends chat gpt umgeschrieben. Habe bloß deine fragen dort eingefügt xD
Ah deswegen hat mir das alles nichts gebracht, cool danke für deine nicht vorhandene Hilfe
Danke, habe jedoch eine Sache vergessen, wenn die antwort n ist, soll er einen Schritt machen, wie baue ich das ein?