Do While - Problem
-
#include <stdio.h> // Standardfunktionen Ein- und Ausgabe #include <conio.h> // Standardfunktionen Tastatur und Bildschirm #include <math.h> // mathematische Standardfunktionen int main (void) { // main-Block Anfang char name[10]; char stimmung; char nochmal; do { printf("Hallo ! \nWie heisst du ? \n\n"); scanf("%10s", &name); printf("\nOk, Danke ! Und wie geht es dir "); printf(name); printf(" ?\n\n"); printf("1: Sehr gut \n2: Geht so \n3: Schlecht\n\n"); scanf("%1d", &stimmung); if (short(stimmung) < 49 || short(stimmung) > 51) { printf("Falsche Eingabe!! \n\nNochmal ( j / n ) ? \n\n"); scanf("%c",&nochmal); break; } else { switch(stimmung) { case 1: printf("Sehr schoen, dass es dir so gut geht ! \n \n"); break; case 2: printf("Du wirst bestimmt noch bessere Laune kriegen ! \n \n"); break; case 3: printf("Das ist aber schade ! \n \n"); break; } } } while (nochmal == 'n'); printf("Auf Wiedersehen \nBis zum naechstenmal ! \n \n"); getchar(); return 0 ; // normales Ende } // main-Block Ende
Hallo,
Im if-Zweig soll nach der Nachricht "falsche Eingabe" gefragt werden, ob das Programm neugestartet werden soll. ( j / n) Das sollte die do while (aus pascal kenn ich die: repeat while) Schleife erledigen. Also Wiederhole das Programm bis nochmal = n ist. Aber irgendwas funktioniert da nicht. Kann mir wer helfen ?
-
Was heißt "geht nicht"? Was mir sofort auffällt, dass du
nochmal
nicht initialisierst. Daher kann da irgend etwas drin stehen!if (short(stimmung) < 49 || short(stimmung) > 51)
schreib lieber
if (stimmung < '1' || stimmung > '3')
-
und das scanf solltest du dir auch schnell abgewöhnen, das macht nur Ärger
-
Wenn ich Pa%d%sblo heißen würde, würde dein Programm ziemlich sicher abstürzen.
-
Im if-Zweig soll nach der Nachricht "falsche Eingabe" gefragt werden, ob das Programm neugestartet werden soll. ( j / n) Das sollte die do while (aus pascal kenn ich die: repeat while) Schleife erledigen. Also Wiederhole das Programm bis nochmal = n ist. Aber irgendwas funktioniert da nicht. Kann mir wer helfen ?
In Pascal heißt die Schleife repeat until (Wiederhole bis). Die Anweisungen werden also wiederholt, bis die Bedingung wahr ist.
In C heißt es do while (führe aus, solange). Die Anweisungen werden also wiederholt, solange die Bedingung wahr ist.Deine Logik ist also falsch herum. } while (nochmal != 'n'); muß es heißen.