Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » OOP Zahlen erraten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.09.2004, 08:35 Uhr
~bastideluxe
Gast


Hallo,
ich soll ein Programm schreiben das sich eine Zufallszahl von 1-10 merkt und der Anwender muss diese erraten. Ich habe es schon versucht, aber komme irgendwie nicht mehr weiter.
Hier mein Programm:



C++:
n
#include<iostream.h>
#include<conio.h>

#define maxZahl 10

class Spiel
{
  private:
     int ZufallsZahl;
     int RateRunde;
  public:
     Spiel();
     int Hinweis();
     void Ergebnis();
     ~Spiel();
};
Spiel::Spiel()
{
     ZufallsZahl=7;
     RateRunde=0;
     cout<<"Raten Sie die Zahl zwischen 1 und"<<maxZahl;
}
int Spiel::Hinweis()
{
     int Zahl;
     RateRunde++;
     cout<<"Eingabe: ";
     cin>>Zahl;
     if(Zahl>ZufallsZahl)
     {
        cout<<"zu hoch"<<endl;
        return 1;
     }
     if(Zahl<ZufallsZahl)
     {
        cout<<"zu niedrig"<<endl;
        return 1;
     }
     if(Zahl==ZufahlsZahl)
     {
        cout<<"Treffer"<<endl;
        return 0;
     }
}
Spiel::Ergebnis()
{
     cout<<RateRunde<<"gebraucht"<<endl;
}

Spiel::~Spiel()
{
     cout<<"GAME OVER";
}

void main(void)
{
     Spiel zahlenraten;

     zahlenraten.Spiel();
     zahlenraten.Hinweis();
     zahlenraten.Ergebnis();
     zahlenraten.~Spiel();

     getch();
}



MFG
Basti
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2004, 09:36 Uhr
virtual
Sexiest Bit alive
(Operator)


Nee, also Konstructoren und Destructoren werden eigentlich ne explizit aufgerufen:

C++:
void main(void)
{
     Spiel zahlenraten; // Konstruktor wird hier implizit aufgerufen

     // Weg damit: zahlenraten.Spiel();
     zahlenraten.Hinweis();
     zahlenraten.Ergebnis();
     // Weg damit: zahlenraten.~Spiel();

     getch();
} // Destructor wird hier implizit aufgerufen.



Tja, und dann wird es bestimmt noch Rügen wegen void main geben. Laß Dich überraschen . Ist aber nicht weiter tragisch momentan, daß da ein void steht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.09.2004, 09:45 Uhr
Airdamn



Du hast erstmal ein Paar Fehler in Deinem Programm:

C++:
// Zufallszahl muss die Variable heißen
if(Zahl==ZufahlsZahl)


Außerdem bekommst Du eine Warnung, weil theoretisch nicht jeder Weg zu einem return führt

C++:
int Spiel::Hinweis()
{
     int Zahl;
     RateRunde++;
     cout<<"Eingabe: ";
     cin>>Zahl;
     if(Zahl>ZufallsZahl)
     {
        cout<<"zu hoch"<<endl;
        return 1;
     }
     else if(Zahl<ZufallsZahl)
     {
        cout<<"zu niedrig"<<endl;
        return 1;
     }
     else
     {
        cout<<"Treffer"<<endl;
        return 0;
     }
}



C++:
// Du brauchst den Konstruktor einen Objektes nicht aufrufen. Das passiert automatisch
// bei der Erzeugung eines Objektes
zahlenraten.Spiel();




C++:
// Du hast hier Rückgabetyp vergessen, void muss da stehen, wie in der Klasse deklariert
void Spiel::Ergebnis()



Ansonsten hätte ich noch Verbesserungsvorschläge, aber erstmal die Fehler...
Wie Du Zufallszahlen generierst kannst Du hier im Forum irgendwo finden (FAQ oder per Suche)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.09.2004, 17:34 Uhr
~bastideluxe
Gast


Also ich hab das mal ausprobiert.
Aber hab folgende Fehler erhalten.

'Spiel::Ergebnis()' is not a member of 'Spiel'
'Hinweis' is not a member of 'Spiel'
'Ergebnis' is not a member of 'Spiel'


Hm was kann das sein ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.09.2004, 21:47 Uhr
typecast
aka loddab
(Operator)


Jo, wenn Pablo schlaeft, dann muss ich das halt machen. Wir wollen ja nicht, dass unser virtual unrecht hat und es keine Ruege wegen void main gibt

Laut dem ANSI Standard muss die main Funktion als int main() deklariert werden. Dann ist conio.h nicht ANSI sondern was Windows spezifisches.
Dann solltest du nicht mehr #include <iostream.h> sondern #include <iostream> verwenden.

So und jetzt zu deinem Problem:

Nachdem ich das conio.h und das getch() weggemacht hatte (ich benutze linux und hab das leider nicht). Hab ich nur noch das falsch geschriebene Zufahlszahl korrigieren muessen und


C++:
Spiel::Ergebnis()
//in ein
void Spiel::Ergebnis()



umwandeln muessen (das hat Airdamn aber schon gesagt). Das sollte dein erster Fehler sein.

Was die anderen beiden angeht wirst du wohl

C++:
zahlenraten.Hinweis;
zahlenraten.Ergebnis;



statt


C++:
zahlenraten.Hinweis();
zahlenraten.Ergebnis();



geschrieben haben. Aber ohne den veraenderten Code kann ich da nur raten...
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.09.2004, 20:16 Uhr
~bastideluxe
Gast


Irgendwie hab ich den selben Fehler auch nach änderungen immer noch ...
MFG
basti
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.09.2004, 09:58 Uhr
virtual
Sexiest Bit alive
(Operator)


Die Sachen, die dir bisher genannt wurden, sind möglicherweise nicht alle, aber auf jedenfall schon mal Punkte, die so auffallen. Wenn Du ein konkretes Problem hast, dann beschreibe es bitte genauer, weil "Ich habe einen Fehler" ist sehr ungenau.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.09.2004, 08:34 Uhr
~bastideluxe
Gast


Ich hatte ihn ja 2 Posts drüber genannt, da dachte ich das reicht. Aber ich hab das Problem mitlerweile behoben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: