C++ - Ratespiel - Vorschläge/Hilfe

ComTen

Grünschnabel
Hey,
ich habe vorhin angefangen ein wenig über C++ zu lernen.
Folgendes Ratespiel habe ich bisher rausgebracht. (Nach dem Motto "Learning by doing" habe ich einfach mal losgelegt ;D)

C++:
#include <iostream>

using namespace std;

int main()
{
    int i;
    
do
  {
cout << "Rate eine Zahl zwischen 1 und 100" << endl;
cin >> i;
  }
while (i != 93);

if (i = 93)
  {
      cout << "Du hast gewonnen !" << endl;
  }
  
if (i > 100)
  {
      cout << "Du hast eine Zahl größer als 100 eingegeben -.-'" << endl;
  }
}

Zu meinen Fragen :

1. Ich will bei einem Ratespiel natürlich nicht immer dieselbe Zahl benutzen. "93" habe ich jetzt einfach mal als Test benutzt. Es gibt sicherlich eine Möglichkeit Beim starten des Programmes eine neue Zahl zu generieren, oder ?

2. Die zweite "if" Zeile klappt nicht so ganz, warum ?

Ich hoffe, ich habe alle Forenregeln eingehalten. :)

Mfg
ComTen
 
Moin und Willkommen hier bei tutorials.de :)

Das ist doch ganz einfach :
Deine while-Schleife läuft solange, bis die Zahl 93 eingegeben wird. Erst dann wird sie aufgrund der Abbruchbedingung verlassen!
Also kann i anschließend IMMER nur den Wert 93 haben (und NIE 100) .....

Gruß
Klaus
 
Hallo,

du kannst dir eine Zufallszahl generieren. Such' einfach mal nach der Funktion "rand()".

Davon abgesehen hast du einen Fehler in der 1. if-Abfrage (sie wird in deinem Fall immer TRUE ergeben):
Code:
// falsch
if (i = 93) ...

// richtig
if (i == 93) ...

// besser
if (93 == i) ...
 
Ok erstmal danke euch beiden. :)
Nachdem ich eure Posts gelesen habe, habe ich ein wenig geändert :

C++:
#include <iostream>

using namespace std;

int main()
{
    int Zufallszahl;
    int i;
    Zufallszahl = (rand()%100);
    
do
  {
cout << "Rate eine Zahl zwischen 1 und 100" << endl;
cin >> i;
  }
  
if (i == Zufallszahl)
  {
      cout << "Du hast gewonnen !" << endl;
  }
}

Wieder eine Frage :

Anscheinend klappt das bisher ja.
Doch ich will jetzt noch sowas einbauen wie z.B :

C++:
if (i < Zufallszahl)
{
   cout << "Zu klein" << endl;
}

Nach der while-Schleife kann ich dies ja anscheinend nicht tun.
Doch in der while-Schleife klappt's ja auch nicht. Wo muss ich das also reinpacken ?
 
Hi.

Bei der do .. while Schleife fehlt das while.

Du mußt es natürlich in die Schleife packen. Warum soll das nicht gehen?

Damit du nicht immer dieselbe Zufallszahl bei jedem Programmstart bekommst, solltest du folgendes zu Beginn der main ausführen:
C++:
srand(time(NULL)); rand();
Außerdem mußt du für die rand Funktion den Header cstdlib und für die time Funktion ctime "includen".

Gruß
 
TOO LATE ... :-(

Moin,

mal davon abgesehen, dass in Deinem Code keine while-Schleife mehr vorkommt :

Nach der while-Schleife kann ich dies ja anscheinend nicht tun.
Doch in der while-Schleife klappt's ja auch nicht

Stimmt, nach der Schleife hättest Du ja den korrekten Wert - ab was genau klappt denn innerhalb der Schleife nicht :confused:
Genau da müsste es ja hin !

Gruß
Klaus
 
Dank euerer Hilfe hab ich's jetzt hingekriegt :)

C++:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    srand(time(NULL)); rand();
    int Zufallszahl;
    int i;
    Zufallszahl = (rand()%100);
    
do
  {
cout << "Rate eine Zahl zwischen 1 und 100" << endl;
cin >> i;

if (i < Zufallszahl)
{
      cout << "Zu klein" << endl;
}

if (i > Zufallszahl)
{
      cout << "Zu gross" << endl;
}
  }
while (i != Zufallszahl);

if (i == Zufallszahl)
  {
      cout << "Du hast gewonnen !" << endl;
      system ("PAUSE");
  }
}

Ist getestet und klappt. :>
Bin ein bisschen stolz drauf. :p
 
Moin,

na prima ;)
Ich würde es nur noch übersichtlicher formatieren - etwa so :
C++:
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    rand();
    int Zufallszahl;
    int i;
    Zufallszahl = (rand()%100);
    
    do
    {
        cout << "Rate eine Zahl zwischen 1 und 100" << endl;
        cin >> i;
   
        if (i < Zufallszahl)
        { 
             cout << "Zu klein" << endl;
        }

        if (i > Zufallszahl)
        {
            cout << "Zu gross" << endl;
        }
    } while (i != Zufallszahl);
 
    if (i == Zufallszahl)
    {
        cout << "Du hast gewonnen !" << endl;
        system ("PAUSE");
    }
}

Dur kannst den Thread auf "erledigt" setzen, in dem Du auf den Haken unten links unter dem letzten Beitrag klickt (neben "+ Auf Thema antworten") !

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
@vfl_freak :
Hab ich bereits getan. :)

Hast du noch eine kleine Aufgabe, die in etwa meinem Leistungsstand entspricht. ?
 
Hi.

Schön, dass es funktioniert.

Ein paar Anmerkungen noch:

Du hast #include <ctime> vergessen.

Du solltest deinen Code ordentlich einrücken. Verwende am besten einen Editor / IDE der das automatisch kann.

Man könnte statt den zwei aufeinanderfolgenden if's auch "if ... else if" verwenden, da immer nur eine Bedingung gleichzeitig wahr sein kann. Man muss also nicht immer beides prüfen, sondern die zweite Bedingung nur, falls die erste falsch war. Insofern wäre das eine kleine Optimierung.

Genauso nach der Schleife. Du wirst die Schleife nur verlassen wenn i == Zufallszahl ist. Das brauchst du also nicht nochmal prüfen.

Verwende für C++ Code doch die [code=cpp]...[/code] Tags.

Kannst ja mal spaßeshalber Strg+Z, Enter drücken. ;)

Gruß
 
Zurück