[C++] Zahlenraten Programm

Mr_Tee

Lieutenant
Registriert
Jan. 2004
Beiträge
698
Code:
/*   Programm: ZahlenRaten.cpp
     Aufgabe : Zahlen in 10 Versuchen zu Raten
     Autor   : Mr_Tee 
     Datum   : 07.05.2004         */

#include <iostream>
#include <conio>
using namespace std;

float statistik=0;             //globale Vereinbarungen (sonst Fehler)
int i=0,Eingabe,Zahlerr,x=1,z=1;
char auswahl;

void abfrage(int x, int y)    // Bedingungen

{
 if (y < (x - 12))
 {
  cout << "Viel zu klein!";
 }

 else

 if (y < (x - 1))
 {
  cout << "Zu klein!";
 }

 else

 if (y == (x - 1) || y == ( x +1))
 {
  cout << "Nah dran!";
 }

 if (y > (x + 1))
 {
  cout << "Zu gro\xE1!";
 }

 else

 if (y > (x + 12))
 {
  cout << "Viel zu gro\xE1";
 }
}

void Statistik()             //Statistik Berechnung

{
 cout << endl;
 statistik =((statistik*(x-1))+(100-(i*10)))/x;
 cout << "\nIhre Trefferquote betr\x84gt: " << statistik << " %";
 x++;
}

void starten()

{
 cout << endl;
 cout << "\nLevel " << z << ".";
 cout << "\n---------";
 randomize();
 Zahlerr = random(100) + 1;
 do                                      
 {
  cout << "\n" << i+1 << ". Versuch: ";
  cin >> Eingabe;
  abfrage(Zahlerr,Eingabe);
  
  if (Eingabe == Zahlerr)
  {
   break;
  }
  i++;
 } while ( i < 10);

 if ( Eingabe == Zahlerr)
 {
  cout << "\n";
  cout << "\nGl" << '\x81' <<"ckwunsch. Sie haben die Zahl erraten";
  Statistik();
  z++;
  i=0;
  starten();
 }

 else
 {
  cout << "\n";
  cout << "\nDie zu suchende Zahl war: " << Zahlerr;  // hier muss irgendwo der Fehler sein
 }
}


void Spielregeln()

{
 cout << "\nSpielregeln";
 cout << "\n-----------";
 cout << "\n";
 cout << "\nIn diesem Spiel muss eine Zahl erraten werden, ";
 cout << "\nim Bereich von 1 - 100.";
 cout << "\nSie haben 10 Versuche.";
 cout << "\nDanach haben Sie die M\x94glichkeit der Wiederholung.";
 cout << "\nAm Ende erhalten Sie dann ihre Statistik.";
}


void start()

{
 char nochmal;
 do
 {
 starten();
 abfrage(Zahlerr,Eingabe);  // ich denke aber der Fehler liegt daran
 Statistik();
 cout << "\nErneut Versuchen? ";
 cout << endl;
 cin >> nochmal;
 x=1;
 i=0;
 } while (nochmal == 'j' || nochmal == 'J');
}


void main()

{
 cout << "Zahlen raten";
 cout << "\n------------";
 do
 {
 char auswahl;
 cout << endl;
 cout << "\n1. Starten <s>";
 cout << "\n2. Spielregeln <r>";
 cout << "\n3. Ende <q>";
 cout << endl;
 cin  >> auswahl;
 switch(auswahl)
  {
  case 'S' :
  case 's' : cout << "\nErraten Sie eine Zahl!";
             cout << "\nSie haben 10 Versuche, also strengen Sie sich an!";
             cout << "\nBitte geben Sie nun eine Zahl ein!";
             start();
             goto end;
  case 'R' :
  case 'r' : Spielregeln();
             break;
  case 'Q' :
  case 'q' : goto end;
  default  : cout << "\nEingabefehler!";
  }
 } while ( auswahl != 'r');
end:
}
Ich weiß das Programm lässt sich verbessern etc. und manches ist umständlich aber so konnte ich einige Fehler umgehen :rolleyes:
Mein Problem ist wenn die zu erratene Zahl im Programm nicht gefunden wird gebe ich sie als Informatiion aus. Aber dann schaltet sich eine Bedingung dazu und sagt noch viel zu klein, groß etc.
Wie krieg ich des weg ? :(
Bei einer Lösung würde ich mich gerne freue :)
Gegen Kritiken hab ich au nix einzuwänden :p
 
Zuletzt bearbeitet von einem Moderator: ([code]-Tags verwenden!)
Re: C++ wo liegt der Fehler?

Naja, konstruktive Kritik wäre von mir, dass du das ganze in code-Tags setzt :) Dann bleibt die Einrückung erhalten und das Lesen macht gleich viel mehr Spaß ;)
 
wie geht den code - Tags ?
oh wurd anscheinend schon gemacht.
Danke Steffen ;)

Anzumerken ist noch.
Bitte C++ Programmierer lünscht mich net dafür das ich Batch Befehle nehme :rolleyes:
Mir viel da nix besseres ein. :)
 
Zuletzt bearbeitet:
Mr_Tee schrieb:
Code:
/*   Programm: ZahlenRaten.cpp
     Aufgabe : Zahlen in 10 Versuchen zu Raten
     Autor   : Mr_Tee 
     Datum   : 07.05.2004         */

#include <iostream>
#include <conio>
using namespace std;

float statistik=0;             //globale Vereinbarungen (sonst Fehler)
int i=0,Eingabe,Zahlerr,x=1,z=1;
char auswahl;

void abfrage(int x, int y)    // Bedingungen

{
 if (y < (x - 12))
 {
  cout << "Viel zu klein!";
 }

 else

 if (y < (x - 1))
 {
  cout << "Zu klein!";
 }

 else

 if (y == (x - 1) || y == ( x +1))
 {
  cout << "Nah dran!";
 }

 if (y > (x + 1))
 {
  cout << "Zu gro\xE1!";
 }

 else

 if (y > (x + 12))
 {
  cout << "Viel zu gro\xE1";
 }
}

void Statistik()             //Statistik Berechnung

{
 cout << endl;
 statistik =((statistik*(x-1))+(100-(i*10)))/x;
 cout << "\nIhre Trefferquote betr\x84gt: " << statistik << " %";
 x++;
}

void starten()

{
 cout << endl;
 cout << "\nLevel " << z << ".";
 cout << "\n---------";
 randomize();
 Zahlerr = random(100) + 1;
 do                                      
 {
  cout << "\n" << i+1 << ". Versuch: ";
  cin >> Eingabe;
  [B][COLOR=Red]abfrage(Zahlerr,Eingabe);[/COLOR][/B]
  
  [B][COLOR=DarkGreen]if (Eingabe == Zahlerr)
  {
   break;
  }[/COLOR][/B]
  i++;
 } while ( i < 10);

 if ( Eingabe == Zahlerr)
 {
  cout << "\n";
  cout << "\nGl" << '\x81' <<"ckwunsch. Sie haben die Zahl erraten";
  Statistik();
  z++;
  i=0;
  starten();
 }

 else
 {
  cout << "\n";
  cout << "\nDie zu suchende Zahl war: " << Zahlerr;  // hier muss irgendwo der Fehler sein
 }
}


void Spielregeln()

{
 cout << "\nSpielregeln";
 cout << "\n-----------";
 cout << "\n";
 cout << "\nIn diesem Spiel muss eine Zahl erraten werden, ";
 cout << "\nim Bereich von 1 - 100.";
 cout << "\nSie haben 10 Versuche.";
 cout << "\nDanach haben Sie die M\x94glichkeit der Wiederholung.";
 cout << "\nAm Ende erhalten Sie dann ihre Statistik.";
}


void start()

{
 char nochmal;
 do
 {
 starten();
 [B][COLOR=Navy]abfrage(Zahlerr,Eingabe);  // ich denke aber der Fehler liegt daran[/COLOR][/B]
 Statistik();
 cout << "\nErneut Versuchen? ";
 cout << endl;
 cin >> nochmal;
 x=1;
 i=0;
 } while (nochmal == 'j' || nochmal == 'J');
}


void main()

{
 cout << "Zahlen raten";
 cout << "\n------------";
 do
 {
 char auswahl;
 cout << endl;
 cout << "\n1. Starten <s>";
 cout << "\n2. Spielregeln <r>";
 cout << "\n3. Ende <q>";
 cout << endl;
 cin  >> auswahl;
 switch(auswahl)
  {
  case 'S' :
  case 's' : cout << "\nErraten Sie eine Zahl!";
             cout << "\nSie haben 10 Versuche, also strengen Sie sich an!";
             cout << "\nBitte geben Sie nun eine Zahl ein!";
             start();
             goto end;
  case 'R' :
  case 'r' : Spielregeln();
             break;
  case 'Q' :
  case 'q' : goto end;
  default  : cout << "\nEingabefehler!";
  }
 } while ( auswahl != 'r');
end:
}

Den roten und den grünen Teil vertauschen, den blauen auskommentieren oder löschen. Das sollte es dann gewesen sein.

*edit* btw: "\nGl" << '\x81' <<"ckwunsch." kannst du auch einfach "\nGl\x81ckwunsch." schreiben.
 
Zuletzt bearbeitet:
Jo aber dann meckerte der Compiler ;)
Aber thx. Ich tests mal gloi aus :)

Also des mit dem Blauen stimmt. Löschen dann gehts.
Die Roten und Grünen lass ich. Sonst kommt keine Abfrage mehr ;)
Aber danke es geht. :)
 
Zuletzt bearbeitet:
Mr_Tee schrieb:
Die Roten und Grünen lass ich. Sonst kommt keine Abfrage mehr ;)
Öhm... aus welchem Grund verstehst du deinen eigenen Code nicht?! Bzw: Was ist dir an if (Eingabe==Zahlerr) {} unklar?!
 
</Life> schrieb:
Öhm... aus welchem Grund verstehst du deinen eigenen Code nicht?! Bzw: Was ist dir an if (Eingabe==Zahlerr) {} unklar?!

Nicht verstehen ?
Wenn ich des tausche kommt bei der Eingabe keine Antwort mehr wie zu, groß, zu klein etc. ;)

Btw. Dank dir hab ich aber noch weitere Bugs gefunden :rolleyes:
Sind aber schon alle behoben :)

EDIT: Hmm ich glaub ich sollte mal meine Programme kommentieren.
Hab nämlich Probleme das zu Verstehen was ich gestern fabriziert habe :p
 
Zuletzt bearbeitet:
Ähhh.. egal es geht aus so :D
 

Ähnliche Themen

Zurück
Oben