Partage
  • Partager sur Facebook
  • Partager sur Twitter

1er TP ''Plus Ou Moins''

probleme pour demander a lutilisateur de rejouer

Sujet résolu
    2 août 2006 à 0:25:12

    Salut, j'ai fait le TP "Plus Ou Moins" et je veut faire toutes les idées d'amélioration, mais pour celle qui demande a l'utilisateur de rejouer, mon code marche plus :(

    j'aurais besoin d'aide pour trouver une solution a mon problème

    Voici le code :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
      const long MAX = 100, MIN = 1;
     
      long Rejouer = 1;
     
      srand(time(NULL));
     
      long Nombre = 0, NombreEntre = 0, NombreCoups = 0;
     
      do
      {
              Nombre = 0, NombreEntre = 0, NombreCoups = 0;
              Nombre = (rand() % (MAX - MIN + 1)) + MIN;
             
     
      do
      {
              printf("Quel est le nombre mystere ? ");
              scanf("%ld", &NombreEntre);
              NombreCoups++;
           
              if(Nombre < NombreEntre)
                 printf("C'est moins !\n\n");
              else if(Nombre > NombreEntre)
                 printf("C'est plus !\n\n");   
              else
                 printf("Bravo, vous avez trouve le nombre mystere en %ld coups !\n\n", NombreCoups);
      }while(NombreEntre != Nombre);
     
              printf("Voulez vous jouer une autre partie ?\n");
              printf("1 = Oui\n");
              printf("0 = Non\n");
              scanf("%ld", Rejouer);
     
      }while(Rejouer < 1 && Rejouer > 1);
     
      system("PAUSE");     
      return 0;
    }


    je sais plus comment faire pour arranger mon probleme, ca fait au moins 20 minute que je cherche

    merci d'avance pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2006 à 0:48:08

      Tu pourras etre un peu plus précis por exliquer ton problème ;)

      Sinon, au lieu de faire une boucle
      do{
      ...
      ...
      }while(Rejouer < 1 && Rejouer > 1);

      pourqoui pas faire un simple "while ( continuer == 1)" ?

      PS: N'oublie pas de remettre le compteur à 0

      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2006 à 0:58:24

        La meme fenetre d'erreur m'apparait quand j'appuis sur le "1" pour rejouer :(

        je crois vraiment que mon probleme se trouve dans ma boucle do...while (la plus grosse), mais je suis pas sur
        • Partager sur Facebook
        • Partager sur Twitter
          2 août 2006 à 1:22:04

          Je crois qu'il manque un & dans ton scanf. De plus pourquoi ne pas utiliser juste la condition Rejouer == 1 dans le do while externe ?

          PS : Je viens de compiler ton programme et il marche avec les modifications indiquées au-dessus.
          Mon compilateur m'a fait une erreur car tu avais défini des variables après la fonction
          srand(time(NULL));
          ce qui n'est pas valide en C.
          • Partager sur Facebook
          • Partager sur Twitter
            2 août 2006 à 1:25:56

            Salut,

            je pense que tu devrait revoir ca :

            while(Rejouer < 1 && Rejouer > 1);


            essaye plutot :

            while(Rejouer != 0);


            Edit: et aussi le & dans le scanf comme la dit Jano ;)
            • Partager sur Facebook
            • Partager sur Twitter
              2 août 2006 à 1:58:44

              Bonjour tout le monde.

              Voila, j'ai aussi un petit problème avec ce TP...
              C'est à dire que pour que le joueur choisisse s'il veux rejouer ou non, quoi que je mette comme réponse, ca coupe le programme...

              Si une idée vous viens !

              Citation : Code C


              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>
              int main(int argc, char *argv[])
              {
              long compteur = 1;
              while (compteur == 1)
              {
              printf("Bonjour et bienvenue au jeu du plus ou moins.\n\nTout d'abord, veuillez choisir le niveau:\n\n1: De 1 a 10.\n2: De 1 a 50.\n3: De 1 a 100.\n\n");
              printf("Faites votre choix : ");
              long lvl = 0;
              scanf("%ld", &lvl);
              if (lvl == 1)
              {
              printf("Vous avez donc choisis le niveau un..\n\nLe but du jeu est donc de trouver un nombre entre 1 et 10.\n\nA vous de jouer: ");
              long reponse = 0;
              long x;
              const long MAX = 10, MIN = 1;
              srand(time(NULL));
              x = (rand() % (MAX - MIN + 1)) + MIN;
              long compte = 0;
              while (reponse != x)
              {
              compte++;
              printf("Quel est le nombre? : ");
              scanf("%ld", &reponse);
              if (reponse < x)
              {
              printf("Vous visez trop bas !\n\n");
              }
              else if (reponse > 10)
              {
              printf("Entre 1 et 10 on a dit...\n\n");
              }
              else if (reponse > x)
              {
              printf("Vous visez trop haut !\n\n");
              }
              else if (reponse == x)
              {
              printf("C'est le bon !\n\nEt vous avez trouve en %ldcoups !\n\n", compte);
              }

              } }
              else if (lvl == 2)
              {
              printf("Vous avez donc choisis le niveau deux..\n\nLe but du jeu est donc de trouver un nombre entre 1 et 50.\n\nA vous de jouer: ");
              long reponse = 0;
              long x;
              const long MAX = 50, MIN = 1;
              srand(time(NULL));
              x = (rand() % (MAX - MIN + 1)) + MIN;
              long compte = 0;
              while (reponse != x)
              {
              compte++;
              printf("Quel est le nombre? : ");
              scanf("%ld", &reponse);
              if (reponse < x)
              {
              printf("Vous visez trop bas !\n\n");
              }
              else if (reponse > 50)
              {
              printf("Entre 1 et 50 on a dit...\n\n");
              }
              else if (reponse > x)
              {
              printf("Vous visez trop haut !\n\n");
              }
              else if (reponse == x)
              {
              printf("C'est le bon !\n\nEt vous avez trouve en %ldcoups !\n\n", compte);
              }

              }}
              else if (lvl == 3)
              {
              printf("Vous avez donc choisis le niveau trois..\n\nLe but du jeu est donc de trouver un nombre entre 1 et 100.\n\nA vous de jouer: ");
              long reponse = 0;
              long x;
              const long MAX = 100, MIN = 1;
              srand(time(NULL));
              x = (rand() % (MAX - MIN + 1)) + MIN;
              long compte = 0;
              while (reponse != x)
              {
              compte++;
              printf("Quel est le nombre? : ");
              scanf("%ld", &reponse);
              if (reponse < x)
              {
              printf("Vous visez trop bas !\n\n");
              }
              else if (reponse > 100)
              {
              printf("Entre 1 et 100 on a dit...\n\n");
              }
              else if (reponse > x)
              {
              printf("Vous visez trop haut !\n\n");
              }
              else if (reponse == x)
              {
              printf("C'est le bon !\n\nEt vous avez trouve en %ldcoups !\n\n", compte);
              }

              } }
              printf("Voulez vous rejouer ?\n\n1: Oui.\n2: Non.\n\nFaites votre choix: ");
              scanf("%ld", compteur);
              }
              system("PAUSE");
              }



              J'espère que mon code vous parrait lisible..

              Merci d'avance !
              • Partager sur Facebook
              • Partager sur Twitter
                2 août 2006 à 2:24:47

                Comme XDream_TheaterX met un & dans ton scanf.
                • Partager sur Facebook
                • Partager sur Twitter
                  2 août 2006 à 8:16:19

                  Grrr...Quelle erreur de ****
                  Merci beaucoup :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 août 2006 à 5:26:35

                    désolez, j'ai pas pu répondre parce que j'ai perdu l'électricité hier a cause d'un gros orage ( vraiment gros ) alors, je vais essayer toute vos solution demain, parce que la je suis fatiguer, donc j'en reparlerai vers 6-7h ( de la france ) midi chez moi :)

                    edit: j'ai fait vos proposition et ca marche, merci a tous
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 août 2006 à 3:13:59

                      Bonjour, excusez-moi de vous derangez mais je ne sais pas ce qui cloche dans mon code...
                      il me dit qu'il y'a une erreur a la ligne 41 (celle ou il y'a ecrit : }while(nouvellePartie != 2);

                      Voici mon code :

                      #include <stdio.h>
                      #include <stdlib.h>
                      #include <time.h>


                      int main ( int argc, char** argv )
                      {
                      const long MAX = 100, MIN = 1;

                      long nouvellePartie = 1, nombreMystere = 0, nombreEntre = 0, compteur = 0;

                      srand(time(NULL));


                      do
                      {
                      nombreMystere = 0, nombreEntre = 0, compteur = 0;
                      nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                      printf("====Plus ou moins====\\n\\n\\n");

                      do
                      {
                      printf("Quel est le nombre ? ");
                      scanf("%ld", &nombreEntre);
                      compteur++;

                      if (nombreMystere > nombreEntre)
                      {
                      printf("C'est plus ! \\n");
                      }
                      else if (nombreMystere < nombreEntre)
                      {
                      printf("C'est moins ! \\n");
                      }
                      else
                      printf ("Bravo, vous avez trouve le nombre mystere en %ld coups !!! \\n", compteur);
                      } while (nombreEntre != nombreMystere);
                      printf ("voulez-vous reccomencer une partie?");
                      printf ("1.oui\\n 2.non\\n");
                      scanf("%ld", &nouvellePartie)
                      } while(nouvellePartie != 2);

                      system("PAUSE");
                      }


                      J'éspere que ce n'est pas trop dur a lire...
                      merci d'avance.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 août 2006 à 6:52:23

                        Salut,

                        Utilise les balises < code type="c">TON CODE</ code> (sans les espace)

                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <time.h>


                        int main ( int argc, char** argv )
                        {
                        const long MAX = 100, MIN = 1;

                        long nouvellePartie = 1, nombreMystere = 0, nombreEntre = 0, compteur = 0;

                        srand(time(NULL));


                        do
                        {
                        nombreMystere = 0, nombreEntre = 0, compteur = 0;
                        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                        printf("====Plus ou moins====\\\\n\\\\n\\\\n");

                        do
                        {
                        printf("Quel est le nombre ? ");
                        scanf("%ld", &nombreEntre);
                        compteur++;

                        if (nombreMystere > nombreEntre)
                        {
                        printf("C'est plus ! \\\\n");
                        }
                        else if (nombreMystere < nombreEntre)
                        {
                        printf("C'est moins ! \\\\n");
                        }
                        else
                        printf ("Bravo, vous avez trouve le nombre mystere en %ld coups !!! \\\\n", compteur);
                        } while (nombreEntre != nombreMystere);
                        printf ("voulez-vous reccomencer une partie?");
                        printf ("1.oui\\\\n 2.non\\\\n");
                        scanf("%ld", &nouvellePartie) <--- il manque le ;
                        } while(nouvellePartie != 2);

                        system("PAUSE");
                        }



                        il manque le ";" a la ligne juste au dessus.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 août 2006 à 15:12:09

                          Erf juste ca.... :o

                          Merci Golderack.
                          Désolé de vous déranger juste pour un point virgule...
                          • Partager sur Facebook
                          • Partager sur Twitter

                          1er TP ''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