for-Schleife zur Eingabeüberprüfung funktioniert nicht (Anfängerprogramm)



  • Hallo

    ich bin Anfänger im Bereich C/C++ und bekomme es nicht hin, folgendes zu programmieren:
    Es soll eine Variable eingegeben werden, nämlich eine (Fließkomma-)zahl. Gibt man nun "ausversehen" statt einer Zahl z.B. einen Buchstaben ein, so soll eine Fehlermeldung ausgegeben werden und man hat einen erneuten Versuch.
    Das ganze ohne erneuten Versuch klappt wunderbar, nur sobald die for-Schleife ins Spiel kommt, funktioniert nichts. Entweder die Schleife wird einfach übersprungen, oder es kommt die Fehlermeldung, ich hätte den Bezeichner (eingabe) nicht initialisiert, obwohl das nicht stimmt.
    Hier ist mal ein Code-Versuch. Eigentlich soll dann nach erfolgreicher Eingabe noch weitergerechnet werden, aber darum geht es bei meinem Problem ja nicht. Hier mal einer meiner Versuche, bei dem die Schleife einfach übersprungen wird:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
    	int eingabe;
    	float radius;
    
    	for (eingabe = 0; eingabe > 0;)
    	{
    	eingabe = scanf("%f", &radius);
    	if (eingabe == 1)
    	{
    		printf("%2.2f\n", radius);
    	}
    	else
    	{
    		printf("Error!\n");
    	}
    	}
    	system("pause");
    }
    

    Wäre über eine funktionierende Lösung plus Erklärung sehr dankbar.

    LG alecs


    Anmelden zum Antworten
     


  • Steh auf dem Schlauch.

    Was willst du hiermit:

    for (eingabe = 0; eingabe > 0;)
    

    erreichen?



  • das erste wird ja nur beim ersten schleifeneintritt ausgeführt, da will ich die variable für die eingabenkontrolle einfach auf null setzen. dann kommt die eingabeaufforderung, und ist diese erfolgreich so ist eingabe = 1, deswegen wird (eigentlich...) die if-bedigung erfüllt und die schleife dann wieder verlassen...
    zumindest in meinem kopf



  • Zumindest wird for so selten genutzt. Habt ihr das als Vorgabe?
    Bei mir ignoriert dein for(... alles was in den geschweiften Klammern danach steht.

    So wie du das planst, soll das eine Endlosschleife werden die beim Fehler aussteigt?

    Hier schon mal etwas, wenn es eine Endlosschleife werden soll:

    for (eingabe = 0; eingabe > -1;)
        {
            printf("Bitte geben sie eine Zahl ein: ");
            eingabe = scanf("%f", &radius);
    

    Musst das dann mit dem Ausstieg ergänzen.



  • Eigentlich soll die Schleife aufhören, wenn eine korrekte eingabe von "radius" erfolgt ist. falls dies nicht der fall ist soll es eben nochmal eingegeben werden sollen.
    sind im kurs noch nicht soweit, hab mir das mit dem c/c++ handbuch von galileo computing angesehen und bin auf das programm gekommen, als eine art "erweiterung" zum programm in der vorlesung (da war es nur daten einlesen, wenn falsch eingegeben wurde dann pech gehabt.)



  • Okay, folgende Ergänzung soll dann beim Fehler aussteigen:

    else
            {
                printf("Error!\n");
                eingabe = -2;
            }
    

    Musst halt umschreiben, wenn es anders soll.


Anmelden zum Antworten