Eingeschränkte Eingabemöglichkeiten
-
dann verschieb ich dich...
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
poste deinen code.
edit: jedenfalls den teil, wo du was einliest.
-
Hier der Code, hier erfolgt zum ersten mal eine eingabe, allerdings im verlauf auch an anderen stellen.
void Eingabe() { cout << "Geben sie eine Zahl zwischen 1 und 9 ein: "; cin >> geratene_zahl; cout << endl; }
-
Hobi schrieb:
Jedoch sobald der Benutzer etwas anderes als eine Zahl eingibt verschachtelt sich das Programm in einer Endlosschleife.
Das ist ja mal 'ne wirklich urige Formulierung!

In dem von dir geposteten Code gibts keine Schleifen, ergo kann sich
das Programm darin auch nicht verschachteln.Poste mal den Codeanteil indem die Schleife um den Aufruf der
Funktion Eingabe() steht.
-
do { cin.ignore(cin.rdbuf()->in_avail()); cin.clear(); cout << "eine Zahl bitte: "; cin >> myint; } while(cin.fail());Gruß
-
oder wenn wirlich nur zwischen 1 und 9
int zahl=0; do{ char zahlEingabe; cin>>zahlEingabe; if( (zahlEingabe -'0' >0 ) && (zahlEingabe - '0'< 10) ){ zahl=zahlEingabe-'0'; cout<<"sie haben eingegeben:"<<zahl; break; } cout<<"falscheingabe"; }while (true);
-
@elise Bringt dir nur herzlich wenig, wenn sich cin verabschiedet hat ;).
-
Ich weiß jetzt nicht genau, wie C++ bei einer Anweisung wie
cin >> myint;reagiert wenn in der Eingabe Buchstaben auftreten
(eine Exception wird meines Wissens nicht geworfen).Aber deine Schleife läuft doch bis cin.fail() == false ist,
also ein korrekter int gelesen wurde. Somit sieht doch
alles richtig aus
(Im Übrigen wird in der Schleife doch nirgends das von dir
zuvor gepostet Eingabe() aufgerufen.
)
-
Die Schleife ist die Eingabefunktion, erweitert um ein wenig mehr Robustheit.
-
Javaner schrieb:
Ich weiß jetzt nicht genau, wie C++ bei einer Anweisung wie
cin >> myint;reagiert wenn in der Eingabe Buchstaben auftreten
(eine Exception wird meines Wissens nicht geworfen).Die Konsole rödelt endlos weiter, solange das fail Flag von cin gesetzt ist.