Problem mit Eingabe
-
So, ich mal wieder mit wahrscheinlich einem Anfängerproblem:
Und zwar will ich die zu spielende Rundenzahl einlesen mit:
do { cout << endl << "Wieviele Runden wollt ihr spielen? "; cin >> rundenmax; cin.seekg(0,std::ios::end); if (rundenmax > 50) cout << endl << "Erzaehl mir Nichts! Maximal 50 dann wirds langweilig!"<<endl; } while (rundenmax > 50);
Wenn man relativ niedrige Zahlen eintippt die aber über 50 sind (also bis 1000000) dann sagt er den Satz und man soll neu eingeben, gibt man aber eine sehr hohe Zahl ein, dann zeigt er den Satz nicht an und führt das ganze Programm und Funktionen innerhalb einer Sekunde aus und ist ganz am Ende, ohne das man noch was machen könnte. Woran liegt das und wie kann ich falsche Eingaben abfangen? Ich dachte an einen overflow, aber die Zahl die ich als Test eingegeben habe passt locker in eine long Variable! Vorschläge?
-
Ich hab jetzt mal zum leeren des Eingabepuffers cin.clear() genommen, jetzt springt er zumindest nicht mehr zum Programmende aber gibt man eine zu große Zahl ein, dann ignoriert er es, d.h. eine erneute Aufforderung kommt nicht.
EDIT: Gibt man eine Zahl unter 50 ein, so erhält rundenmax den korrekten Wert, ist die Zahl größer 50, dann fragt er nicht mehr nach und rundenmax bleibt unverändert, aber die while Schleife müsste doch nochmal ausgeführt werden, oder?