Hey Leute, ich bräuchte von Euch hilfe für mein "Projekt".
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?
ich benutze Microsoft Visual C++ 2010 Express
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