undzwar hab ich ein Zahlenraten Programm geschrieben, da ich jedoch noch komplettter Neuling in dem Bereich c++ bin, sind mir ein paar Fehler unterlaufen. Wenn ich anstatt einer Zahl einen Buchstabe eingebe, zerschießt es mein Programm sprichwörtlich.
könntet ihr mir da vielleicht unter die arme greifen?
Code:
#include <iostream>
# include <ctime>
using namespace std;
int limit; // Sagt dem Programm, es kann die Variable "limit" benutzen
int number; // Sagt dem Programm, es kann die Variable "number" benutzen und gibt ihr den änderbahren wert 0 //
int random_number = 0; // Sagt dem Programm, es kann die Variable "random_number" benutzen // Die Zufällig generierte Zahl
int versuche_eigene;
int versuche;
int main();
int Ende();
void Falsche_Eingabe_Anfang();
int Falsche_Eingabe_Ende();
char Auswahl;
char Anfang;
void Neustart();
void Versuche_10();
void Versuche_15();
void Versuche_20();
void Versuche_Unendlich();
void Versuche_Eigene();
int main()
{
srand((unsigned)time(0));
Neustart();
}
void Neustart()
{
system("cls");
cout << "|*************************|" << endl;
cout << "| Zahlenraten |" << endl;
cout << "| By Me |" << endl;
cout << "| |" << endl;
cout << "|*************************|" << endl;
int versuche = 0;
cout << "Bitte Nur!! Kleinbuchstaben!! und kein Buchstabe anstatt Zahl eingeben!" << endl;
cout << "Unendlich Versuche? (A) \n10 Versuche? (B)\n15 Versuche? (C)\n20 Versuche? (D)\nEigene Versuchsanzahl? (E)" << endl;
cin >> Anfang;
switch(Anfang)
{
case('a'):
Versuche_Unendlich();
case('b'):
Versuche_10();
case('c'):
Versuche_15();
case('d'):
Versuche_20();
case('e'):
Versuche_Eigene();
default:
cout << "Falsche Eingabe!\n(A), (B) oder (C) oder (D) oder (E) in Kleinbuchstaben bitte" << endl;
Falsche_Eingabe_Anfang();
}
}
void Versuche_10()
{
cout << "Hoechste Zahl?" << endl;
cin >> limit;
random_number = (rand()%limit)+1;
//10 Versuche
int max_versuche = 10;
for(versuche = 1; versuche <= max_versuche; versuche++)
{
if((versuche > 1) && number > random_number)
{ cout << "Die Zahl ist kleiner!" << endl;
}
else if((versuche > 1) && number < random_number)
{ cout << "Die Zahl ist groesser!" << endl;
}
cout << "Versuch Nummer: " << versuche << endl;
//cout << random_number << endl;
cout << "Wie lautet dein Tipp?" << endl;
cin >> number;
if(random_number == number)
break;
}
Ende();
}
void Versuche_15()
{
//15 Versuche
cout << "Hoechste Zahl?" << endl;
cin >> limit;
random_number = (rand()%limit)+1;
int max_versuche2 = 15;
for(versuche = 1; versuche <= max_versuche2; versuche++)
{
if((versuche > 1) && number > random_number)
cout << "Die Zahl ist kleiner!" << endl;
else if((versuche > 1) && number < random_number)
cout << "Die Zahl ist groesser!" << endl;
cout << "Versuch Nummer: " << versuche << endl;
//cout << random_number << endl;
cout << "Wie lautet dein Tipp?" << endl;
cin >> number;
if(random_number == number)
break;
}
Ende();
}
void Versuche_20()
{
cout << "Hoechste Zahl?" << endl;
cin >> limit;
random_number = (rand()%limit)+1;
int max_versuche3 = 20;
for(versuche = 1; versuche <= max_versuche3; versuche++)
{
if((versuche > 1) && number > random_number)
cout << "Die Zahl ist kleiner!" << endl;
else if((versuche > 1) && number < random_number)
cout << "Die Zahl ist groesser!" << endl;
cout << "Versuch Nummer: " << versuche << endl;
//cout << random_number << endl;
cout << "Wie lautet dein Tipp?" << endl;
cin >> number;
if(random_number == number)
break;
}
Ende();
}
void Versuche_Unendlich()
{
// Unendlich Versuche
cout << "Hoechste Zahl?" << endl;
cin >> limit;
random_number = (rand()%limit)+1;
do
{
if((versuche > 0) && number > random_number)
{
cout << "Die Zahl ist kleiner!" << endl;
}
else if((versuche >0) && number < random_number)
{
cout << "Die Zahl ist groesser!" << endl;
}
versuche++;
cout << "Versuche: Unendlich" << endl;
//cout << random_number << endl;
cout << "Wie lautet dein Tipp?" << endl;
cin >> number;
}while(number != random_number);
Ende();
}
void Versuche_Eigene()
{
cout << "Dein Versuchslimit?" << endl;
cin >> versuche_eigene;
cout << "Hoechste Zahl?" << endl;
cin >> limit;
random_number = (rand()%limit)+1;
for(versuche = 1; versuche <= versuche_eigene; versuche++)
{
if((versuche > 1) && number > random_number)
cout << "Die Zahl ist kleiner!" << endl;
else if((versuche > 1) && number < random_number)
cout << "Die Zahl ist groesser!" << endl;
cout << "Versuch Nummer: " << versuche << endl;
//cout << random_number << endl;
cout << "Wie lautet dein Tipp?" << endl;
cin >> number;
if(random_number == number)
break;
}
Ende();
}
int Ende()
{
if(number == random_number)
{ system("cls");//cls ist ein batch Befehl und beudeted "clear screen", kann aber durch den c++ befehl system() in c++ "umgewandelt" werde
cout << "Versuche: "<< versuche << " Deine Hoechste Zahl: " << limit << "\n\n|Richtig! Die zu erratende Zahl war " << number << endl;
cout << "|(N)ochmal?\n|(B)eenden?" << endl;
cin >> Auswahl;
switch(Auswahl)
{
case('n'):
Neustart();
case('b'):
return 0;//return 0 beendet das spiel sofort
default:
cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
Falsche_Eingabe_Ende();
}
}else //wenn du's nicht geshafft hast
{
system("cls");
cout << "Versuche: "<< versuche << " Deine Hoechste Zahl: " << limit << "\n\nSchade! Die zu erratende Zahl war " << random_number << endl;
cout << "(N)eustart? \n(B)eenden?" << endl;
cin >> Auswahl;
switch(Auswahl)
{
case('n')://wenn "c" in das textfeld eingegeben wurde
Neustart();
case('b'):
return 0;//return 0 beendet das Programm sofort
default:
cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
Falsche_Eingabe_Ende();
}
}
}
void Falsche_Eingabe_Anfang()
{
cin >> Anfang;
switch(Anfang)
{
case('a'):
Versuche_Unendlich();
case('b'):
Versuche_10();
case('c'):
Versuche_15();
case('d'):
Versuche_20();
case('e'):
Versuche_Eigene();
default:
cout << "Falsche Eingabe!\n(A), (B) oder (C) oder (D) oder (E) in Kleinbuchstaben bitte" << endl;
Falsche_Eingabe_Anfang();
}
}
int Falsche_Eingabe_Ende()
{
cin >> Auswahl;
switch(Auswahl)
{
case('n')://wenn "c" in das textfeld eingegeben wurde
Neustart();
case('b'):
return 0;//return 0 beendet das Programm sofort
default:
cout << "Falsche Eingabe!\n(N) oder (B) in Kleinbuchstaben bitte." << endl;
Falsche_Eingabe_Ende();
}
}
ich benutze Microsoft Visual C++ 2010 Express






