Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Nimm Spiel

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.05.2002
    Ort
    Körle
    Beiträge
    12

    Nimm Spiel

    Hallo!

    Ich hab versucht, die Übungsaufgabe zu Teil 15 von Volkards C++-Kurs zu lösen(www.volkard.de).
    Leider Kompiliert g++(GNU) das Programm nicht. Er meint:

    implicit declaration of function int gewonnen(...)

    Vielleicht könnt ihr mir weiterhelfen. Der Code:

    Code:
    #include <iostream.h>
    
    int anzahlAusgeben(int anzahl)
    {
       cout << "Es liegen " << anzahl << " Muenzen auf dem Tisch." << endl;
       return 0;
    };
    
    int gewonnen(int wer)
    {
       if(wer == 1)
           cout << "Du hast gewonnen! Gratuliere." << endl;
       else
           cout << "Ich habe gewonnen, du Pfeife." << endl;
       return 0;
    };
    
    int zugRechner(int anzahl)
    {
       if(anzahl % 4 == 0)
           return anzahl - 1;
       else
           return anzahl - (anzahl % 4);
    };
    
    int zugMensch(int anzahl)
    {
       int muenzen = 0;
       do
       {
       cout << "Wie viele Münzen willst du nehmen? " << flush;
       cin >> muenzen;       }while((muenzen > 3) && (muenzen > anzahl) &&
    (muenzen < 1));};
    
    void main()
    {
       int anzahlMuenzen = 0;
       const int RECHNER = 0;
       const int MENSCH = 1;
          cout << "Anzahl der Muenzen: ";
       cin >> anzahlMuenzen;
       anzahlAusgeben(anzahlMuenzen);
          while(anzahlMuenzen > 0)
       {
           if((anzahlMuenzen = zugRechner(anzahlMuenzen)) > 0)
           {
               anzahlAusgeben(anzahlMuenzen);
           }
           else
           {
               gewonnnen(RECHNER);
               break;
           }
           if((anzahlMuenzen = zugMensch(anzahlMuenzen)) > 0)
           {
               anzahlAusgeben(anzahlMuenzen);
           }
           else
           {
               gewonnnen(MENSCH);
               break;
           }
       }
    
    };
    $su -c "**** das system"

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    Hi,

    - Der Anweisungsblock einer Funktion hört mit einer geschlossenen geschweiften Klammer auf, nicht mit einem Semikolon ( Semikolon nur bei Klassen, Strukturen, Enums )

    - in main () sind 2 Tippfehler, beidesmal gewonnen mit 3 statt 2 n.

    - der Rückgabewert von main () sollte vom Typ int sein, nicht void.

    Und wenn Du zum Schluss noch

    Code:
    #include <iostream.h>
    durch

    Code:
    #include <iostream>
    using namespace std;
    ersetzt, dann hast Du ne lästige Compiler-Warnung weniger

    Gruß micha
    IRC: irc.euirc.net #tux

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.05.2002
    Ort
    Körle
    Beiträge
    12
    Original geschrieben von micha
    - der Rückgabewert von main () sollte vom Typ int sein, nicht void.
    Warum denn nicht void, die Funktion gibt doch nichts zurück.
    $su -c "**** das system"

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    Original geschrieben von BigOne
    Warum denn nicht void, die Funktion gibt doch nichts zurück.
    Eben nicht, die main Funktion gibt sehr wohl einen Wert zurück, Beispiel:

    Code:
    int main (void)
    {
        return (0);
    }
    Wenn Du das Programm ( ich nenns mal exit_test ) ausführst, und danach den Exit-Status abfrägst, bekommst Du den Rückgabewert der main Funktion:

    Code:
    micha@workstation snippets $ ./exit_test
    micha@workstation snippets $ echo $?
    0
    micha@workstation snippets $
    Das Gleiche bei einem anderen Rückgabewert:

    Code:
    int main (void)
    {
        return (255);
    }
    Rückgabewert:

    Code:
    micha@workstation snippets $ ./exit_test
    micha@workstation snippets $ echo $?
    255
    micha@workstation snippets $
    Zusätzlich müsste eigentlich Dein Compiler ne Warnung ausgeben, wenn Du die main Funktion mit void deklarierst:

    Code:
    micha@workstation snippets $ g++ -o test test.cc
    test.cc:4: `main' must return `int'
    micha@workstation snippets $
    Gruß micha
    IRC: irc.euirc.net #tux

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •