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.


Anmelden zum Antworten