kostenloser Webspace werbefrei: lima-city


minigame: zahlenraten

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    splinto

    Kostenloser Webspace von splinto, auf Homepage erstellen warten

    splinto hat kostenlosen Webspace.

    hi,

    ich hab mal folgendes programmiert:
    #include <iostream>
        using namespace std;
        
        int main()
        {
            int randnum = rand()%100;
            int guess;
            cout<<\"Bitte Zahl eingeben: \";
            cin>>guess;
            
            if (guess < randnum || guess > randnum)
            {
                 
                 for (int i=guess; i == randnum; i == guess)
                 {
                     
                     if (guess < randnum)
                     {
                         cout<<\"\\nHöher schätzen...\\n\";
                     }
                     
                     if (guess > randnum)
                     {
                         cout<<\"\\nHöher schätzen...\\n\";
                     }
                     
                     cout<<\"\\nNochaml schätzen: \";
                     cin>>guess;
                 }
                     
            if (guess == randnum)
            {
                 cout<<\"\\nRichtig!\\n\";
                 cin.clear();
                 cin.get();
                 cin.get();
            }
        }}



    ööhm aber nachdem ich eine zahl eingegeben habe wird das programm geschlossen...

    ich sehe aber keinen grund warum
    kann mir jemand weiterhelfen?

    mfg splinto
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. kenn mich zwar mit C bzw. C++ nicht aus, aber was ich mit meinem Wissen sehe ist das du nichts definiert hast wodurch man wieder an den Anfang gesetzt wird und somit neue Zahlen raten kann. Bei Batchdatein enden diese auch einfach wenn keine weiteren Befehle vorhanden sind.
  4. Autor dieses Themas

    splinto

    Kostenloser Webspace von splinto, auf Homepage erstellen warten

    splinto hat kostenlosen Webspace.

    also ich hab normalerweise alle variablen definiert:

    int guess
    int randnum
    int i = guess

  5. also ich hab normalerweise alle variablen definiert:

    int guess
    int randnum
    int i = guess



    Ich glaub er meint das es keine Schleife gibt da der User nochmal eine Zahl eingeben kann, wenn er falsch liegt. ;)

    Wobei das hast du mehr oder weniger eh drinnen ;)

    @topic:
    Ja schau dir dein Programm nochmal genau an.
    Da sind einige, ähm, Denkfehler drinnen. ;)

    Edit: Noch was: Was soll das n??
    Ein Enter macht man mit \"\\n\"

    Beitrag geändert: 9.5.2008 16:05:34 von philippkern
  6. Hab das ganze ein wenig optimiert...

    #include <iostream>
        using namespace std;
        
        int main()
        {
            srand(time(NULL));
            int randnum = rand()%100;
            int guess;
    
                 while (guess!=randnum)
                 {
                     cout<<\"\\nNochaml schaetzen: \";
                     cin>>guess;
                     
                     if (guess < randnum)
                     {
                         cout<<\"\\nHoeher schaetzen...\\n\";
                     }
                     
                     if (guess > randnum)
                     {
                         cout<<\"\\nNiedriger schaetzen...\\n\";
                     }
                     
                 }
        
                 cout<<\"\\nRichtig!\\n\";
                 cin.clear();
                 cin.get();
                 cin.get();
    }


  7. Hab das ganze ein wenig optimiert...

    #include <iostream>
        using namespace std;
        
        int main()
        {
            srand(time(NULL));
            int randnum = rand()%100;
            int guess;
    
                 while (guess!=randnum)
                 {
                     cout<<\"\\nNochaml schaetzen: \";
                     cin>>guess;
                     
                     if (guess < randnum)
                     {
                         cout<<\"\\nHoeher schaetzen...\\n\";
                     }
                     
                     if (guess > randnum)
                     {
                         cout<<\"\\nNiedriger schaetzen...\\n\";
                     }
                     
                 }
        
                 cout<<\"\\nRichtig!\\n\";
                 cin.clear();
                 cin.get();
                 cin.get();
    }




    Und was ist wenn ganz unwahrscheinlicherweise der Wert von randnum schon am Anfang auf guess steht? :P
    Da wäre besser guess zuerst auf -1 oder so zu setzen, nicht? ;)

    Außerdem gibt das bei mir eine Speicherschutzverletzung wenn ich das nicht vorher auf was initialisiere ...

    Edit: time: required headers: <time.h>

    Beitrag geändert: 9.5.2008 16:23:29 von philippkern
  8. Autor dieses Themas

    splinto

    Kostenloser Webspace von splinto, auf Homepage erstellen warten

    splinto hat kostenlosen Webspace.

    zitat von philippkern:

    Edit: Noch was: Was soll das n??
    Ein Enter macht man mit \"\\n\"


    - ja also das forum is dran \"schuld\" weil ein backslash nicht angezeigt wird


    => danke an euch es geht...



    mfg splinto
  9. Mit dem initialwert hast du recht, auch wenn er nicht zwingen erfolderlich ist... zumidnest wirft sowas normalerweise keinen Speicherfehler.
    Was den Header angeht so brauchte ich ihn in meinem Dev C++ nicht. Aber man kann ihn ja einbinden, wenn er fehlen sollte.

    Hier die Version mit dem Startwert, danke für den Hinweis.. ich wusste ich hab was vergessen (:

    #include <iostream>
        using namespace std;
        
        int main()
        {
            srand(time(NULL));
            int randnum = rand()%100;
            int guess=-1;
    
                 while (guess!=randnum)
                 {
                     cout<<\"\\nNochaml schaetzen: \";
                     cin>>guess;
                     
                     if (guess < randnum)
                     {
                         cout<<\"\\nHoeher schaetzen...\\n\";
                     }
                     
                     if (guess > randnum)
                     {
                         cout<<\"\\nNiedriger schaetzen...\\n\";
                     }
                     
                 }
        
                 cout<<\"\\nRichtig!\\n\";
                 cin.clear();
                 cin.get();
                 cin.get();
    }


    Eine riesengroße Änderung, oder? (:

    Edit: pas de Problem (:


    Beitrag geändert: 9.5.2008 16:57:46 von adrians
  10. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    Oder so, meiner Meinung nach noch schöner:
    #include <iostream>
    using namespace std;
        
    int main()
    {
      srand(time(NULL));
      int guess, randnum = rand()%100;
      
      do
      {
        cout<<\"\\\\nNochaml schaetzen: \";
        cin>>guess;
                    
        if (guess < randnum)
          cout<<\"\\\\nHoeher schaetzen...\\\\n\";
                    
        else if (guess > randnum)
          cout<<\"\\\\nNiedriger schaetzen...\\\\n\";              
      }
      while(guess!=randnum);
        
      cout<<\"\\\\nRichtig!\\\\n\";
      cin.get();
      cin.get();
      return 0;
    }


    Beitrag geändert: 9.5.2008 17:12:23 von kochmarkus

  11. Mit dem initialwert hast du recht, auch wenn er nicht zwingen erfolderlich ist... zumidnest wirft sowas normalerweise keinen Speicherfehler.
    Was den Header angeht so brauchte ich ihn in meinem Dev C++ nicht. Aber man kann ihn ja einbinden, wenn er fehlen sollte.

    Hier die Version mit dem Startwert, danke für den Hinweis.. ich wusste ich hab was vergessen (:

    #include <iostream>
        using namespace std;
    ....
    }


    Eine riesengroße Änderung, oder? (:

    Edit: pas de Problem (:


    Beitrag geändert: 9.5.2008 16:57:46 von adrians


    Also ein Debug Error! der während der Laufzeit der exe gekommen war. Kann jetzt nicht sagen obs ne Speicherzugriffsverletzung war. ;)
    Hmm, nja auf jeden Fall hat mein Visul Studio den Header benötigt.

    Ja es können die kleinsten Änderungen große Auswirkungen haben. :biggrin:
  12. Autor dieses Themas

    splinto

    Kostenloser Webspace von splinto, auf Homepage erstellen warten

    splinto hat kostenlosen Webspace.

    ok danke nochmal für eure hilfe...

    wer möcht kann sich die datei runterladen:
    http://splinters-hp.pytalhost.com/downloads/HI-LO.exe
  13. hi ich habe dieses Thema erst heute gesehen

    jedenfalls wollte ich mal fragen, ob es nicht sinnvoller ist, am Ende einfach: system(\"pause\"); zu machen anstatt dieser cin.get-Lösung
  14. system(\"PAUSE\");
    ist eine eher unschöne Lösung. Sie ist nicht plattformunabhängig und generell ein eher ungern gesehenes Element.

    Ich rate dringenst davon ab.
  15. Autor dieses Themas

    splinto

    Kostenloser Webspace von splinto, auf Homepage erstellen warten

    splinto hat kostenlosen Webspace.

    ich schätze mal um system(\"pause\"\') zu verwenden muss ich erstmal <stdlib.h> \"includen\"


    Beitrag geändert: 19.5.2008 20:28:36 von splinto
  16. da ich in letzter zeit nicht sooft hier gucken kann erts jetzt eine antwort:
    ok ich wusste nicht, dass das unschön ist
    als ich anfangs die andere möglichkeit mit cin.get(); probiert habe, hattte sich das Programm trotzdem immer geschlossen...

    ich muss dabei jedenfalls nichts extra importieren
  17. Das Problem mit dem schließen trotz cin.get() ist schhnell erklärt:
    Es könnte sein, dass noch Anschläge im Buffer gespeichert sind. Ein cin.clear() (ich denke es war die Methode) dürfte Abhilfe schaffen.
  18. bei cpp-dev mit als beispiel geliefert:
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    
    using namespace std;
    
    void Start ();
    void GetResults ();
    
    int  i, j, life, maxrand;
    char c;
    
    
    void
    Start ()
    {
         i = 0;
         j = 0;
         life = 0;
         maxrand = 6;
    
         cout << \"Select difficulty mode:\\n\"; // the user has to select a difficutly level
         cout << \"1 : Easy (0-15)\\n\";
         cout << \"2 : Medium (0-30)\\n\";
         cout << \"3 : Difficult (0-50)\\n\";
         cout << \"or type another key to quit\\n\";
         c = 30;
    
         cin >> c;                   // read the user\'s choice
         cout << \"\\n\";
    
         switch (c)
         {
            case \'1\' : maxrand = 15;  // the random number will be between 0 and maxrand
            break;
            case \'2\' : maxrand = 30;
            break;
            case \'3\' : maxrand = 50;
            break;
            default : exit(0);
            break;
         }
    
         life = 5;         // number of lifes of the player
         srand( (unsigned)time( NULL ) ); // init Rand() function
         j = rand() % maxrand;  // j get a random value between 0 and maxrand
    
         GetResults();
    
    }
    
    
    void
    GetResults ()
    {
         if (life <= 0)
            // if player has no more life then he lose
         {
            cout << \"You lose !\\n\\n\";
            Start();
         }
    
         cout << \"Type a number: \\n\";
         cin >> i;          // read user\'s number
    
         if ((i>maxrand) || (i<0)) // if the user number isn\'t correct, restart
         {
            cout << \"Error : Number not between 0 and \\n\" << maxrand;
            GetResults();
         }
    
         if (i == j)
         {
            cout << \"YOU WIN !\\n\\n\"; // the user found the secret number
            Start();
         }
    
         else if (i>j)
         {
            cout << \"Too BIG\\n\";
            life = life - 1;    // -1 to the user\'s \"life\"
            cout << \"Number of remaining life: \" << life << \"\\n\\n\";
            GetResults();
         }
    
         else if (i<j)
         {
            cout << \"Too SMALL\\n\";
            life = life - 1;
            cout << \"Number of remaining life:\\n\" << life << \"\\n\\n\";
            GetResults();
         }
    }
    
    
    int
    main ()
    {
         cout << \"** Jackpot game **\\n\";
         cout << \"The goal of this game is to guess a number. You will be ask to type\\n\";
         cout << \"a number (you have 5 guess)\\n\";
         cout << \"Jackpot will then tell you if this number is too big of too small compared to the secret number to find\\n\\n\";
         Start();
         return 0;
    }

  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!