Fehlerschleife springt nicht auf voherigen wert



  • hallo leute. ich habe eine schleife geschrieben, die die eingabe des benutzers auf fehler überprüft. sie nennt sich funktion einlesend und liest nacheinander werte des benutzers ein. allerdings springt sie leider nach einer falscheingabe nicht zurück zur gleichen frage,sondern geht weiter zur nächsten wodurch das programm dann nichtmehr geht.

    double einlesend(char * ausgabe)
    {
    	double d;
    
    	// Benutzerinfo ausgeben
    	printf("%s",ausgabe);				//%s string ausgabe info
    
    	// Wert von der Tastatur einlesen
    	while(scanf("%lf",&d) != 1)
    		{
    		printf("Fehler beim Einlesen, bitte nocheinmal: ");
    		while('\n' != getchar()){}
    		}
    				d=sqrt(d*d);				//vermeiden von eingabe negativer Werten
    											// Wert zurueckliefern
    	return d;
    }
    

    wie könnte man lösen, dass es zur voherigen frage wieder zurückspringt?

    gruß



  • red baron schrieb:

    d=sqrt(d*d); //vermeiden von eingabe negativer Werten

    👍

    wie könnte man lösen, dass es zur voherigen frage wieder zurückspringt?

    welche frage? 😕



  • bmass = einlesend("Masse (kg): ");
    	brad  = einlesend("Radius (m): ");
    	feder = einlesend("Federkonstante in N/m: ");
    	h     = einlesend("Fallhoehe (m): ");
    	v     = 0;
    	tend  = einlesend("Dauer der Simulation (s): ");
    

    die werden nacheinander abgefragt. wenn ich jetzt bei der masse nen fehler produziere, also nen buchstaben eingeben o.ä. dann springt er trotzdem direkt zum radius und fragt nciht erneut ab



  • wieso sollte er wieder zum printf hoch springen, da ist doch garkeine schleife darum



  • er soll ja nicht zum printf sondern sozusagen eine einlesend funktion wieder zurückgehen..



  • tut er doch



  • double d;
    	do {
    		printf("\nWechle Zahl ?");
    		if(!scanf("%lf",&d)) printf("\n Bitte nur Zahlen");
    		fflush(stdin);
    	} while(spieleranzahl<=0);
    

    sowas?



  • und um negative zahlen zu umgehen kannst du auch
    double fabs (double x);
    benutzen
    #include <math.h> nicht vergessen


Anmelden zum Antworten