Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plus ou moins

Nombre qui reste le même

Sujet résolu
    17 novembre 2007 à 16:06:32

    Salut à tous !

    Pour m'entrainer sur les classes, j'ai voulu refaire le TP Plus ou moins de M@teo mais en utilisant cette fois-ci les classes.

    Mais j'ai un petit problème :-° , à chaque partie que je recommence le nombre mystère reste le même :o .

    Voici mon code :

    Nombre.h:
    1. #include <iostream>
    2. class Nombre
    3. {
    4.     public:
    5.     Nombre();
    6.     void genererNombre(int nombreAleatoire, int MAX, int MIN);
    7.     void comparerNombre(int nombreTape, int nombreMystere);
    8.     private:
    9.     int m_nombreMystere;
    10.     int m_nombreTape;
    11. };


    Nombre.cpp:
    1. #include <iostream>
    2. #include <stdlib.h>
    3. using namespace std;
    4. #include "Nombre.h"
    5. Nombre::Nombre()
    6. {
    7.     m_nombreMystere = 0;
    8.     m_nombreTape = 0;
    9. }
    10. void Nombre::genererNombre(int nombreAleatoire, int MAX, int MIN)
    11. {
    12.     nombreAleatoire = (rand() % (MAX - MIN + 1)) + MIN;
    13.     m_nombreMystere = nombreAleatoire;
    14. }
    15. void Nombre::comparerNombre(int nombreTape, int nombreMystere)
    16. {
    17.     do
    18.     {
    19.         cout << "Choisissez un nombre entre 1 et 100" << endl;
    20.         cin >> nombreTape;
    21.         m_nombreMystere = nombreMystere;
    22.         m_nombreTape = nombreTape;
    23.         if (nombreTape < nombreMystere)
    24.         {
    25.             cout << "C'est plus." << endl << endl;
    26.         }
    27.         else if (nombreTape > nombreMystere)
    28.         {
    29.             cout << "C'est moins." << endl << endl;
    30.         }
    31.         else
    32.         {
    33.             cout << "Bravo, vous avez trouve le nombre mystere !" << endl << endl;
    34.         }
    35.     }
    36.     while(nombreMystere != nombreTape);
    37. }


    main.cpp:
    1. #include <iostream>
    2. #include "Nombre.h"
    3. using namespace std;
    4. int main()
    5. {
    6.     int nombreMystere, nombreTape;
    7.     Nombre Nombre;
    8.     srand(time(NULL));
    9.     Nombre.genererNombre(nombreMystere, 100, 0);
    10.     cout << "<<<<<< Plus ou moins avec les classes >>>>>>" << endl << "Un jeu cree par Gymnopaul" << endl << endl;
    11.     Nombre.comparerNombre(nombreTape, nombreMystere);
    12.     return 0;
    13. }


    Merci de m'aider à résoudre ce problème :) .
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      17 novembre 2007 à 17:54:26

      dans le tuto de M@theo, si tu relance le programme juste après l'avoir fermé, c'est également le même nombre.
      Regarde dans les tutos, je coris qu'il y en a un pour faire des nombres un peu plus aléatoire
      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2007 à 18:33:37

        Pourtant quand j'ai fait le tp de m@téo ca changeait avec chaque fois :o .
        J'ai regardé dans le tuto sur ces fameux nombres aléatoires et j'ai essayé la fonction sur ce projet et sur un autre à part mais le problème persiste :( .
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2007 à 18:58:31

          Citation : Geoffroy

          dans le tuto de M@theo, si tu relance le programme juste après l'avoir fermé, c'est également le même nombre.
          Regarde dans les tutos, je coris qu'il y en a un pour faire des nombres un peu plus aléatoire


          Je pense que geoffoy a raison ;) le nombre est seulement pseudo aléatoire dans ce cas la ... il faut chercher un peu (dsl mais j'ai oublié comment faire)
          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2007 à 19:24:10

            inclus <ctime> et enlève <stdlib.h>. Le premier point résoudra peut-être ton problème
            • Partager sur Facebook
            • Partager sur Twitter
            Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
              17 novembre 2007 à 21:47:08

              J'ai mis <ctime> à la place mais ca ne marche toujours pas :'( .

              J'ai trouvé quelque chose d'encore plus étrange :
              La valeur est et reste à 2 au début avec le code que je vous ai donné.
              Ensuite, j'ai rajouté un destructeur dans mon code, et il se passe la même chose mais avec une valeur de 8 o_O !!
              Et ensuite, lorsque je retire à nouveau le destructeur, la valeur se remet à 2.

              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2007 à 23:14:55

                Salut,

                le problème n'as aucun rapport avec les nombre aléatoire.
                c'est simplement une mauvaise conception du code ^^

                je vais mettre en rouge ce que j'ai changé, en espérant que ça t'aidera :

                edit : désolé, il semble avoir un problème quand on met des balises dans une balise de code :(
                edit2: je vais les enlever, rien que pour etre capable de lire convenablement ^^

                Nombre.h:

                #include <iostream>

                class Nombre
                {
                public:

                Nombre();
                void genererNombre(int nombreAleatoire, int MAX, int MIN);
                void comparerNombre(int nombreTape, int nombreMystere);

                private:

                int m_nombreMystere;
                int m_nombreTape;

                };

                Nombre.cpp:

                #include <iostream>
                #include <stdlib.h>

                using namespace std;

                #include "Nombre.h"

                Nombre::Nombre()
                {
                m_nombreMystere = 0;
                m_nombreTape = 0;
                }

                void Nombre::genererNombre(int nombreAleatoire, int MAX, int MIN)
                {
                nombreAleatoire = (rand() % (MAX - MIN + 1)) + MIN;

                m_nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                }

                void Nombre::comparerNombre(int nombreTape, int nombreMystere)
                {
                int nombreTape = 0;
                do
                {
                cout << "Choisissez un nombre entre 1 et 100" << endl;
                cin >> nombreTape;

                m_nombreMystere = nombreMystere;
                m_nombreTape = nombreTape;


                if (nombreTape < m_nombreMystere)
                {
                cout << "C'est plus." << endl << endl;
                }

                else if (nombreTape > m_nombreMystere)
                {
                cout << "C'est moins." << endl << endl;
                }

                else
                {
                cout << "Bravo, vous avez trouve le nombre mystere !" << endl << endl;
                }
                }
                while(m_nombreMystere != nombreTape);
                }

                main.cpp:

                #include <iostream>

                #include "Nombre.h"

                using namespace std;

                int main()
                {
                int nombreMystere, nombreTape;
                Nombre Nombre;
                srand(time(NULL));

                Nombre.genererNombre(nombreMystere, 100, 0);

                cout << "<<<<<< Plus ou moins avec les classes >>>>>>" << endl << "Un jeu cree par Gymnopaul" << endl << endl;

                Nombre.comparerNombre(nombreTape, nombreMystere);

                return 0;
                }




                Voilà ! ^^
                • Partager sur Facebook
                • Partager sur Twitter
                Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                  18 novembre 2007 à 7:54:47

                  shadosan, mon sauveur !!! :D
                  Merci beaucoup de cette réponse très précise, j'ai bien compris mon erreur, et tout marche impec maintenant.

                  Encore merci à toi et à tous !!! :) .

                  EDIT : C'est quoi le problème de balise de code ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 novembre 2007 à 18:12:37

                    bah tiens je vais le faire juste là (si tu vois rien d'étrange chez toi, c'est bizarre) :


                    1. int <couleur nom="rouge">nombreQuiTue</couleur> = 666;


                    edit : testé sur FFv2.0.0.7 et IE7, pareil.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                    Anonyme
                      18 novembre 2007 à 20:34:05

                      -> c'est normal qu'on ne puisse pas faire comme tu as fait, c'est le but d'une balise code après tous!
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Plus ou moins

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown