Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec le TP 1 de M@teo

    14 juillet 2006 à 11:20:07

    Bonjour ^^
    Voilà, j'ai un petit problème avec le premier TP de M@teo.

    J'ai fait le programme un peu à ma façon, et puis je l'ai compilé (avec toute la tripotée d'erreur que ca implique (que j'ai corrigées comme j'ai pu)), et là, problème, il ne me l'a PAS compilé.
    J'ai deux programmes (Code::Blocks et Dev C++), qui m'ont tous deux fait la même erreur, j'en ai donc conclu que ce n'est pas l'ordinateur qui est débile, mais son utilisateur (=D).

    Bref, j'ai cherché l'erreur... et je l'ai pas (encore) trouvée.

    Si un gentil membre pouvait consacrer quelques minutes à lire mon script, pui à me dire ce qui ne va pas, je lui en serais très reconnaissant^^ (euh pour ceux qui auraient pas remarqué, je suis un novice en C^^)

    Donc, voilà mon code :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
        long nombreMystere = 0, reglesJouerQuitter = 0, reponseDonnee = 0, compteurDeCoups = 0, nombreDonne = 0;
        const long MAX = 100, MIN = 1;
        srand(time(NULL));
        do
        {
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             prinf("=== Voici ... Le grand jeu du nombre mystère! ===\n\n1.Les regles\n2.Le jeu\n3.Quitter");
             scanf("%ld", &reglesJouerQuitter);
             if (reglesJouerQuitter == 1)
             {
                          printf("\nLe jeu du nombre mystere consiste a trouver le nombre choisi au hasard entre 1 et 100 par l'ordinateur.");
                          printf(" Inserez un nombre de 1 a 100, et l'ordinateur vous dira s'il est superieur, inferieur ou egal au nombre choisi, le but etant que vous decouvriez le nombre mystere en le moins de coups possible! Bonne chance!");
                          printf("\nQue faire?\n2.Jouer!\n3.Quitter! ");
                          scanf("%ld", &reglesJouerQuitter);
             }
             else if (reglesJouerQuitter == 2)
             {
                          do
                          {
                          compteurDeCoups++;
                          printf("\nTapez un nombre entre 1 et 100 ");
                          scanf("%ld", &nombreDonne);
                          if (nombreDonne > nombreMystere)
                          {
                                 printf("\nTrop grand!");
                          }
                          else if (nombreDonne < nombreMystere)
                          {
                               printf("\nTrop petit!");
                          }
                          else
                          {
                              printf("Felicitations! Le nombre mystère était %ld\n", nombreMystere);
                              switch (compteurDeCoups)
                              {
                              case 1:
                                   printf("Waou! Vous avez reussi en un seul coup! Quelle chance!\n");
                                   break;
                              case 2:
                                   printf("Pas mal du tout! Vous avez reussi en %ld coups!\n", compteurDeCoups);
                                   break;
                              case 3:
                                   printf("Pas mal du tout! Vous avez reussi en %ld coups!\n", compteurDeCoups);
                                   break;
                              case 4:
                                   printf("Pas mal du tout! Vous avez reussi en %ld coups!\n", compteurDeCoups);
                                   break;
                              case 5:
                                   printf("Bien! C'est pas mal du tout! Vous avez decouvert le nombre mystere en %ld coups!\n", compteurDeCoups);
                                   break;
                              case 6:
                                   printf("Bien! C'est pas mal du tout! Vous avez decouvert le nombre mystere en %ld coups!\n", compteurDeCoups);
                                   break;
                              case 7:
                                   printf("Bravo! On voit que vous connaissez la technique hein? ^^\n");
                                   break;
                              default:
                                   printf("Euh, comment vous avez fait pour réussir en %ld coups? C'est beaucoup trop!\n", compteurDeCoups);
                                   break;
                              }
                          }
                      } while (nombreDonne || nombreMystere);
                              printf("Que voulez-vous faire maintenant?\n1.Rejouer!\n2.Quitter :( ");
                              scanf("%ld", &reponseDonnee);
             }
             else
                      {
                         printf("Au revoir!");
                      }
        } while (reponseDonnee != 2 || reglesJouerQuitter != 3);
      system("PAUSE");     
      return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      14 juillet 2006 à 11:48:36

      Voilà, tout beau tout propre. :p

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

      int main(int argc, char *argv[])
      {
          long nombreMystere = 0, reglesJouerQuitter = 0, reponseDonnee = 0, compteurDeCoups = 0, nombreDonne = 0;
          const long MAX = 100, MIN = 1;
          srand(time(NULL));
          do
          {
               nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
               printf("=== Voici ... Le grand jeu du nombre mystère! ===\n\n1.Les regles\n2.Le jeu\n3.Quitter");
               scanf("%ld", &reglesJouerQuitter);
               if (reglesJouerQuitter == 1)
               {
                            printf("\nLe jeu du nombre mystere consiste a trouver le nombre choisi au hasard entre 1 et 100 par l'ordinateur.");
                            printf(" Inserez un nombre de 1 a 100, et l'ordinateur vous dira s'il est superieur, inferieur ou egal au nombre choisi, le but etant que vous decouvriez le nombre mystere en le moins de coups possible! Bonne chance!");
                            printf("\nQue faire?\n2.Jouer!\n3.Quitter! ");
                            scanf("%ld", &reglesJouerQuitter);
               }
               else if (reglesJouerQuitter == 2)
               {
                            do
                            {
                            compteurDeCoups++;
                            printf("\nTapez un nombre entre 1 et 100 ");
                            scanf("%ld", &nombreDonne);
                            if (nombreDonne > nombreMystere)
                            {
                                   printf("\nTrop grand!");
                            }
                            else if (nombreDonne < nombreMystere)
                            {
                                 printf("\nTrop petit!");
                            }
                            else
                            {
                                printf("Felicitations! Le nombre mystère était %ld\n", nombreMystere);
                                switch (compteurDeCoups)
                                {
                                case 1:
                                     printf("Waou! Vous avez reussi en un seul coup! Quelle chance!\n");
                                     break;
                                case 2:
                                     printf("Pas mal du tout! Vous avez reussi en %ld coups!\n", compteurDeCoups);
                                     break;
                                case 3:
                                     printf("Pas mal du tout! Vous avez reussi en %ld coups!\n", compteurDeCoups);
                                     break;
                                case 4:
                                     printf("Pas mal du tout! Vous avez reussi en %ld coups!\n", compteurDeCoups);
                                     break;
                                case 5:
                                     printf("Bien! C'est pas mal du tout! Vous avez decouvert le nombre mystere en %ld coups!\n", compteurDeCoups);
                                     break;
                                case 6:
                                     printf("Bien! C'est pas mal du tout! Vous avez decouvert le nombre mystere en %ld coups!\n", compteurDeCoups);
                                     break;
                                case 7:
                                     printf("Bravo! On voit que vous connaissez la technique hein? ^^\n");
                                     break;
                                default:
                                     printf("Euh, comment vous avez fait pour réussir en %ld coups? C'est beaucoup trop!\n", compteurDeCoups);
                                     break;
                                }
                            }
                        } while (nombreDonne || nombreMystere);
                                printf("Que voulez-vous faire maintenant?\n1.Rejouer!\n2.Quitter :( ");
                                scanf("%ld", &reponseDonnee);
               }
               else
                        {
                           printf("Au revoir!");
                        }
          } while (reponseDonnee != 2 || reglesJouerQuitter != 3);
        system("PAUSE");     
        return 0;
      }

      Tu avais oublié un "t" dans le premier "printf". (Donc tu as écris "prinf". ;) )

      Maintenant ton programme marche, mais tu remarqueras un problème : on peut plus s'arrêter de jouer ! Alors essaie d'arranger ça sinon tu reviens demander. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        14 juillet 2006 à 13:22:48

        Merci mille fois ^^ Je ne pensais pas que mon erreur allait être si... euh... :euh: ... risible? Oui, risible, c'est le mot. Z'avez le droit de rire, c'était pitoyable de ma part ;)

        Maintenant, j'ai une autre question :

        long variable1 = 4;
        if (variable1 = 4)
        {...
        ...
        variable1 = 3
        }
        else if (variable1 = 3)
        {...}


        Il ne va pas me faire le else if? Donc il privilégie tout de même l'escamotage à la lecture de haut en bas, vu que le if et le esle if se vérifient, il devrait m'exécuter les deux, non?
        Ce veut dire que lorsque je vais un "if...else if...else" une fois qu'une des conditions est vérifiée il ne vérifiera pas les autres?

        Merci de me répondre^^
        • Partager sur Facebook
        • Partager sur Twitter
          14 juillet 2006 à 13:42:24

          bah oui pourquoi une tel question ?
          • Partager sur Facebook
          • Partager sur Twitter
            14 juillet 2006 à 13:48:21

            Pour savoir ;) Comme je suis un débutant, je préfère être certain ^^
            • Partager sur Facebook
            • Partager sur Twitter
              15 juillet 2006 à 20:15:45

              oui mais ton code ne marchera pas il y'a une difference entre "affectation" et "condition" pour affecter taper =;pour faire une condition taper ==.
              mais si tu veux qu'il soit possible refait un if pour ta condition.
              • Partager sur Facebook
              • Partager sur Twitter
                16 juillet 2006 à 7:43:50

                Déjà pour le if, il faut deux = ! (variable1 == 4), ensuite, tu as oublier un point-virgule.

                Enfin, étant donné que ce sont des conditions, il regarde celle qui s'active et il passe 40 mètres par-dessus les autres...dans ton code :

                long variable1 = 4;
                if (variable1 = 4)
                {...
                ...
                variable1 = 3
                }
                else if (variable1 = 3)
                {...}


                Une fois entré dans le 'if', il n'ira pas dans le 'else if' car la condition est finie. Par contre, si tu fais comme sa :


                int main(int argc, char *argv[])
                {
                   long variable1 = 4;
                   
                   if (variable1 == 4)
                   {
                     variable1 = 3;
                   }
                   
                   if (variable1 == 3)
                   {
                     printf("Variable = 3 ! Sa marche !");
                   }
                 
                  system("PAUSE");     
                  return EXIT_SUCCESS;
                }


                Il affichera : Variable = 3 ! Sa marche !
                Tu pige ? :D
                • Partager sur Facebook
                • Partager sur Twitter
                  16 juillet 2006 à 15:30:54

                  Yeah merci! :D

                  J'avais réussi d'une autre manière, mais la tienne est bien meilleure =D
                  Soit dit en passant je ne savais pas qu'on était pas obligés de mettre un "else" après le "if" :-°

                  Thanks^^ (Si j'ai d'autres questions, je les poserai sur ce topic, ca évitera l'invasion de sujets douteux :p (J'en suis à la partie II ! :pirate: Ca va faire mal! (à ma tête XD))
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Problème avec le TP 1 de M@teo

                  × 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