Eingeschränkte Eingabemöglichkeiten
-
Hallo zusammen,
nun ich bin neu in diesem Forum und hoffe das mir ein paar erfahrene Köpfe mir helfen können.
Ich selbe bin noch unerfahren und lerne gerade C++. Ich habe vor kurzem eine Ausbildung zum Anwendungsentwickler angefangen.
Derzeit bin ich dabei ein Zahlenratespiel zu schreiben. Ganz simpel eigentlich.
Es wird eine Zufallszahl generiert, und der benutzer muss diese Zahl erraten (zwischen 1-9). Er hat 4 versuche. Das Programm läuft auch soweit wunderbar.
Jedoch sobald der Benutzer etwas anderes als eine Zahl eingibt verschachtelt sich das Programm in einer Endlosschleife.Ich hab daher die Frage wie ich das verhindern kann. Kann ich auf irgend eine weise verhindern das der Benutzer was anderes ausser Zahlen eintippen kann?
Vielleicht die anderen Tasten sperren oder so?
Gruß
Hobi
-
Ach mist, tut mir leid ich hab mich verklickt und bin im falschen Forum gelandet

-
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.