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

d0zer

Lt. Commander
Registriert
Aug. 2007
Beiträge
1.039
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:
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;

	
   }
 
Danke habe es 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
		  }
 
oder so :
Code:
while(!(cin >> x))
    {
        // Fehler...
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(),'\n');
    }
 
Zurück
Oben