Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tp:plus ou moins amélioré

    12 octobre 2006 à 20:50:38

    bonjour,je vousrais savoir quelle est mon erreur dans ce code car j essaye de faire un compteur de coup mais a chaque fois que je trouve le nombre mystere le programme s arrete sans ecrire le nombre de coup et bravo etc voila le code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main ( int argc, char** argv )

    {
    long nombreMystere = 0, nombreEntre = 0,compteur = 0;
        const long MAX = 10, MIN = 1, ;


    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    do
    {
        printf ("Quelle est le nombre mystere\n\n");
        scanf ("%ld",&nombreEntre);

        if (nombreEntre > nombreMystere)
        {printf ("Non,c est moins\n\n");
        compteur++;}
        else if (nombreEntre < nombreMystere)
        {printf ("Non,c' est plus\n\n");
        compteur++;}
        else
        printf ("bravo vous avez trouver le nombre mystere en %ld,",compteur);
        }while (nombreEntre != nombreMystere);
        }

    <code type="c"></code>
    • Partager sur Facebook
    • Partager sur Twitter
      12 octobre 2006 à 21:01:19

      ps: si tu fais du c et bien il faut declarer compteur = 1;
      voila
      bonne programmation
      • Partager sur Facebook
      • Partager sur Twitter
        12 octobre 2006 à 21:31:06

        bonjour

        Citation : kudo2

        ps: si tu fais du c et bien il faut declarer compteur = 1;
        voila
        bonne programmation


        Et pourquoi ça ?


        const long MAX=10 , MIN=0,;

        Ici t'as mis une virgule en trop .

        Gronul91
        • Partager sur Facebook
        • Partager sur Twitter
          12 octobre 2006 à 21:31:45

          D'abord fait en sorte que ton code soit lisible :


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

          int main ( int argc, char** argv )

          {
              long nombreMystere = 0, nombreEntre = 0,compteur = 0;
              const long MAX = 10, MIN = 1, ;


              srand(time(NULL));
              nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
              do
              {
                  printf ("Quelle est le nombre mystere\n\n");
                  scanf ("%ld",&nombreEntre);

                  if (nombreEntre > nombreMystere)
                  {
                      printf ("Non,c est moins\n\n");
                      compteur++;
                  }
                  else if (nombreEntre < nombreMystere)
                  {
                      printf ("Non,c' est plus\n\n");
                      compteur++;
                  }
                  else
                      printf ("bravo vous avez trouver le nombre mystere en %ld,",compteur);
              }
              while (nombreEntre != nombreMystere);
          }


          La c'est deja mieux ;).

          Ensuite le compteur de coups ne doit pas se trouver dans les if et elseif mais dans la boucle meme (ca te fait une ligne en moins a taper ;) ).
          Ce qui donne :


                  do
                  {
                      printf("Quel est le nombre mystere?\n");
                      scanf("%ld", &nombreEntrer);
                      if (nombreEntrer == nombreMystere)
                      {
                          printf("Bravo vous avez trouver le nombre mystere en %ld coups!\n\n", nombreDeCoups);
                      }
                      else if (nombreEntrer < nombreMystere)
                      {
                          printf("Non c'est plus\n\n");
                      }
                      else
                      {
                          printf("C'est moins\n\n");
                      }

                      nombreDeCoups++;
                  }
                  while (nombreEntrer != nombreMystere);


          Et comme a dit kudo2 il faut initialiser ton compteur a 1 sinon tu as un coup en moins de compter (essaye ;) ).
          J'ai nommer mon compteur nombreDeCoups car sinon si j'ai plusieurs compteurs je ne saurais pas a quoi il correspond ;).

          Sur ce bonne programmation.

          Kurapix
          • Partager sur Facebook
          • Partager sur Twitter
            13 octobre 2006 à 8:44:45

            De rien.

            Si y'en a qui veulent j'ai fini depuis un bon moment toutes les ameliorations proposees par M@teo (j'ai pas ete plus loin vu que ce jeu m'interesse pas donc j'y ai pas passer enormement de temps lol). Je peux poste le code source si demande il y a.

            Kurapix
            • Partager sur Facebook
            • Partager sur Twitter
              13 octobre 2006 à 17:54:37

              bonjour

              Citation : Kurapix

              Et comme a dit kudo2 il faut initialiser ton compteur a 1 sinon tu as un coup en moins de compter (essaye ).


              Je ne comprends pas pourquoi vous vous obstinez à vouloir initialiser la variable à 1 puisque que ce code fait exactement la même chose alors que la variable est initialisé à 0 :


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

              int main ( int argc, char** argv )

              {
                  long nombreMystere = 0, nombreEntrer = 0,nombreDeCoups = 0;
                  const long MAX = 10, MIN = 1 ;


                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

                      do
                      {
                          nombreDeCoups++;

                          printf("Quel est le nombre mystere?\n");
                          scanf("%ld", &nombreEntrer);
                          if (nombreEntrer > nombreMystere)
                          {
                              printf("C'est moins \n");

                          }
                          else if (nombreEntrer < nombreMystere)
                          {
                              printf("Non c'est plus\n\n");
                          }
                          else
                          {
                              printf("Bravo !\n");
                          }
                       
                      }
                      while (nombreEntrer != nombreMystere);
              }
              • Partager sur Facebook
              • Partager sur Twitter
                13 octobre 2006 à 18:09:44

                Arf tu mets ta reponse avant la question en me citant. On s'acharne a mettre nombreDeCoups a 1 parce que sinon c'est un bug.

                Ca change rien que nombresDeCoups soit avant ou apres les conditions vu que ca a une execution sequentielle.
                T'as essayer avec nombresDeCoups = 0? Moi quand je trouve le chiffre en 5 coups il me met que j'ai trouver en 4 coups ... Alors que avec nombresDeCoups = 1 j'obtiens bien 5.

                Kurapix
                • Partager sur Facebook
                • Partager sur Twitter

                Tp:plus ou moins amélioré

                × 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