Ergebnis 1 bis 3 von 3

Thema: Frage zum Input

  1. #1

    Frage zum Input

    Ich hab man neulich ein simples Program geschrieben, dass eine Reihe von Zahlen abfragt und dann den Durchschnitt ausgibt.

    Code:
    #include <iostream>
    using namespace std;
    
    double avg(double i);
    
    int main()
    {
        int num = 0;
        cout << "Enter a few numbers, -1 to quit: " << endl;
        
        while(num != -1)
        {
            cin >> num;
                  
            if(num <= 0 ){
            cout << "Average of given numbers is: " << avg(num) << endl;
            }
            else if(num != -1) cout << "Wrong input, must be a positive number\n";
        }
    
    cout << "\n\n";
    system("pause");
    return 0;
    }
    double avg(double i)
    {
        static double sum = 0, countofbeaufort = 0;
    
        sum = sum + i;
        countofbeaufort++;
    
        return (sum/countofbeaufort);
    }
    Was mich jetzt interessiert ist: Wenn man einen String eingibt (zb. "asdf"), loopt das Programm sich endlos, und der Wert der Zahl in die eingegeben wird bleibt null.

    Meine Frage wäre jetzt, warum loopt sich das Programm endlos? Warum kann es nicht einfach einmal eine Fehlernachricht ausgeben? Es ist nicht so, dass ich damit ein großes Problem hätte, es interessiert mich nur einfach^^

    Geändert von Mivey (10.02.2010 um 13:11 Uhr)

  2. #2
    "Loopt sich endlos", heißt das, das Programm verlässt die while- Schleife nicht?
    Welche Fehlermeldung würdest du denn erwarten ?
    Um einen möglichen Eingabefehler abzufangen, kannst du die fail() Methode direkt nach dem einlesen verwenden. Das sehe dann in etwa so aus aus:
    Code:
    if ( cin.fail() ) {
    	cout << "Falsche Eingabe :(" << endl;
    }
    Die fail()- Methode liefert einen boolschen Wert zurück. True, wenn die Eingabe korrekt war, false, wenn sie inkorrekt war.
    Dieser Link sieht ganz gut dazu aus:
    http://www.cpp-tutor.de/cpp/le04/cin.html

  3. #3
    Zitat Zitat
    Welche Fehlermeldung würdest du denn erwarten ?
    Naja, die Fehlermeldung kommt ja, aber was ich meinte war, das es beim nächsten Durgang die "cin >> " Abfrage einfach überspringt. Ich verstehe nicht ganz warum

    Und danke für den Tipp mit cin.fail(), das kannte ich noch gar nicht^^

    EDIT:
    Achso, da cin die nicht-numerische Eingabe nicht zuordnen kann bleibt sie in seinem "Puffer" und ich muss es mit "cin.clear()" löschen.

    Danke, owly^^

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •