[C++] Eingabe von Buchstaben/Zeichen führt zu Endlosschleife

d0zer

Enthusiast
Thread Starter
Mitglied seit
19.12.2007
Beiträge
1.600
Ort
Darmstadt
Hallo Leute,


ich brauche mal eure Hilfe. Ich muss ein Lottospiel programmieren und bin gerade dran, die Zahlen "anzukreuzen".

Mein Problem ist, wenn er Buchstaben oder Zeichen entgegennimmt, dass er in eine Endlosschelife mit der Fehlermeldung am ende vom Block springt. Mit Zahlen klappt alles.

Ich will jedoch, dass nur Zahlen verarbeitet werden und nichts anderes.

Wahrscheinlich liegt es daran, dass die übergebene Zahl an der jeweiligen Stelle das Array auf "true" setzt. Mit einem Buchstaben kann das Array nichts anfangen, richtig? Wie umgehe ich das Problem?

Die Sache mit dem bool für Zahlen muss erhalten bleiben. Das ist leider vorgegeben vom Prof.




btw


gegebenzahlen=6 und eine Konstante.



Code:
// 6 zahlen ausw?hlen zwischen 1-49.
void Tippzettel::setzen()

{
   int z;
    cout<<"Geben sie "<< gegebenezahlen <<" Zahlen zwischen 1-49 ein."<<endl;

    int counter=0;
   while(counter<gegebenezahlen){ 

       cin>>z;
    if(z<auswahlzahlen && z>0 && zahl[z]==0 )
    {
        zahl[z]=true;
        counter++;

    }else

        cout<<endl<<"Zahl ausserhalb vom Bereich oder wurde schon eingegeben. Bitte eine neue Zahl ankreuzen "<<endl;	
   }


---------- Post added at 20:26 ---------- Previous post was at 20:18 ----------

Habe es schon selbst im Netz gefunden.


Jetzt klappt es. Es werden nur Zahlen angenommen ansonsten kommt eine Fehlermeldung.

Der "neue" Code falls es jemanden interessiert.


Code:
 cin>>z;


	   //Try and Catch damit nur Zahlen kommen
	      if (!cin.good()) { 
            cin.clear(); //clear the error flags 
            cin.sync(); //flush the input buffer
		  }
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh