Abfangen von Fehleingaben
-
Hi,
ich habe folgendes Problem. Mein Programm soll die Hypotenuse eines rechtwinkligen Dreiecks berechnen. Das tut es auch, wenn die Eingabe fehlerfrei ist.
Nun möchte ich jedoch eventuelle Fehleingaben des Nutzers abfangen und ihn zu einer erneuten Eingabe auffordern, wobei alle Eingaben ungültig sind, die nicht einer reellen Zahl entsprechen, also z.B. "aaaa".
Ich kann mir weiter auch nicht erklären wieso z.B. bei Zeile 15 nicht aus der while-Schleife gesprungen wird, wenn man erst eine Fehleingabe unternimmt, dann aber einen zulässigen Wert eingibt. Führt man eine zulässige Eingabe durch, so funktioniert es.Über Ratschläge würde ich mich sehr freuen
Gruß Freddy
Hier mein Code
#include <iostream> #include <cmath> using namespace std; int main() { // Variableninitialisierung float Kathete1=0, Kathete2=0, Hypotenuse=0; // Programmbeschreibung und Aufforderung zur Eingabe cout << "Programm zur Berechnung der Hypotenuse eines rechtwinkligen Dreiecks" << endl; cout << "Bitte geben Sie die erste Kathete ein" << endl; cin >> Kathete1; while (cin.fail() == true || Kathete1 <= 0 ) { cout << "Ungültige Eingabe! Bitte geben Sie die erste Kathete ein!" << endl; cin >> Kathete1; getchar(); } cout << "Bitte geben Sie die zweite Kathete ein" << endl; cin >> Kathete2; while (cin.fail() == true || Kathete2 <= 0 ) { cout << "Ungültige Eingabe! Bitte geben Sie die zweite Kathete ein!" << endl; cin >> Kathete2; getchar(); } // Berechnung der Hypotenuse Hypotenuse = sqrt ( Kathete1 * Kathete1 + Kathete2 * Kathete2 ); cout << "Die Hypotenuse beträgt: " << Hypotenuse << endl; return 0; }
-
Bei einer Falscheingabe wird der Failbit gesetzt, mit cin.clear() kannst du den Failbit löschen..
cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n');