Partage
  • Partager sur Facebook
  • Partager sur Twitter

projet plus ou moins

    16 février 2019 à 1:43:06

    je ne trouve pas mon erreur quand je lance mon code rien ne s'affiche. Je serais reconnaissant si vous trouvez le problème.

    voici mon code:include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

    int main()

    {

    int MAX=0, nombreEcrit=0, nombreMystere=0, continuerpartie=1, choixniveau=0;

    const int MIN=1;

     int nombreDEcoups=1;

        srand(time(NULL));

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

     while(nombreMystere!=nombreEcrit);

    printf("===option===\n\n");

    printf("1:niveau facile\n2:niveau moyens\n3:niveau difficile\n");

    printf("vous voulez quel niveau ?\n");

    scanf("%d", &choixniveau);

    if(choixniveau==1){

        MAX=100;

        printf("niveau facile\n");

        srand(time(NULL));

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

     while(nombreMystere!=nombreEcrit);

        {

         printf("ecrive le nombre mystere\n");

         scanf("%d", &nombreEcrit);

    if (nombreEcrit < nombreMystere)

        printf(" plus grand\n");

    else if(nombreEcrit > nombreMystere)

        printf("plus petit\n");

    else{

        printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);

    }nombreDEcoups++;

    }

    printf("voulez-vous continuer la partie ?\n");

    printf("tapez 1 pour oui ou 0 pour non\n");

    scanf("%d", &continuerpartie);

    }while(continuerpartie);

    if(choixniveau==2){

        MAX=1000;

        printf("niveau moyens\n");

       srand(time(NULL));

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

     int nombreDEcoups=1;

     while(nombreMystere!=nombreEcrit);

         printf("ecrive le nombre mystere\n");

         scanf("%d", &nombreEcrit);

    if (nombreEcrit < nombreMystere)

        printf(" plus grand\n");

    else if(nombreEcrit > nombreMystere){

        printf("plus petit\n");

    }

    else{

        printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);

    }nombreDEcoups++;

    printf(%d", &continuerpartie);

    }

    else if"voulez-vous continuer la partie ?\n");

    printf(%d", &continuerpartie);

    }

    else if(choixniveau==3){

        MAX=10000;

        printf("niveau difficile");

     srand(time(NULL));

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

     int nombreDEcoups=1;

     while(nombreMystere!=nombreEcrit);

         printf("ecrive le nombre mystere\n");

         scanf("%d", &nombreEcrit);

    if (nombreEcrit < nombreMystere)

        printf(" plus grand\n");

    else if(nombreEcrit > nombreMystere)

        printf("plus petit\n");

    else{

        printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);

    }nombreDEcoups++;

    printf("voulez-vous continuer la partie ?\n");

    printf("tapez 1 pour oui ou 0 pour non\n");

    scanf("%d", &continuerpartie);

     }

    return 0;

    }"tapez 1 pour oui ou 0 pour non\n");

    scanf("%d", &continuerpartie);

    }

    else if(choixniveau==3){

        MAX=10000;

        printf("niveau difficile");

     srand(time(NULL));

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

     int nombreDEcoups=1;

     while(nombreMystere!=nombreEcrit);

         printf("ecrive le nombre mystere\n");

         scanf("%d", &nombreEcrit);

    if (nombreEcrit < nombreMystere)

        printf(" plus grand\n");

    else if(nombreEcrit > nombreMystere)

        printf("plus petit\n");

    else{

        printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);

    }nombreDEcoups++;

    printf("voulez-vous continuer la partie ?\n");

    printf("tapez 1 pour oui ou 0 pour non\n");

    scanf("%d", &continuerpartie);

     }

    return 0;

    }

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2019 à 8:49:27

      Tu as oublié d'utiliser l'éditeur de code (bouton </>, comme expliqué dans un des messages à lire d'abord). Je te suggère de vite rectifier ça pour éviter de te faire rouspéter...

      Si rien ne s'affiche, ça pourrait être une boucle infinie. Voyons s'il y a des 'while'... Ah oui, rien que le premier :

      while(nombreMystere!=nombreEcrit);

      Tu vois où est l'erreur ?

      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2019 à 17:15:04

        -

        -
        Edité par edgarjacobs 16 février 2019 à 17:24:52

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          16 février 2019 à 22:37:34

          merci je vais essayer ça. Ok j'ai enlever le while du début. Dorénavant mon programme affiche qlqch, mais uniquement jusqu'au scanf ou je demande quel niveau la personne veut, aprés ça plus rien ne s'affiche. En gros ça montre juste ça. Pourquoi l'ordinateur n'arrive pas à éxecuter le programme qui vient après le scanf ? J'ai pourtant déclarer ma variable choixniveau.

          ===option===

          1:niveau facile
          2:niveau moyens
          3:niveau difficile
          vous voulez quel niveau ?
          voila la nouvelle version de mon code(l'autre j'avais mis le code en double mdr...)
          #include <stdio.h>
          #include <stdlib.h>
          #include <time.h>
          int main()
          {
          int MAX=0, nombreEcrit=0, nombreMystere=0, continuerpartie=1, choixniveau=0;
          const int MIN=1;
           int nombreDEcoups=1;
          printf("===option===\n\n");
          printf("1:niveau facile\n2:niveau moyens\n3:niveau difficile\n");
          printf("vous voulez quel niveau ?\n");
          scanf("%d", &choixniveau);
          if(choixniveau==1){
              MAX=100;
              printf("niveau facile\n");
              srand(time(NULL));
           nombreMystere=(rand()%(MAX - MIN + 1))+ MIN;
          while(nombreMystere!=nombreEcrit);
              {
               printf("ecrive le nombre mystere\n");
               scanf("%d", &nombreEcrit);
          if (nombreEcrit < nombreMystere)
              printf(" plus grand\n");
          else if(nombreEcrit > nombreMystere)
              printf("plus petit\n");
          else{
              printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);
          }nombreDEcoups++;
          }
          printf("voulez-vous continuer la partie ?\n");
          printf("tapez 1 pour oui ou 0 pour non\n");
          scanf("%d", &continuerpartie);
          }while(continuerpartie);
          if(choixniveau==2){
              MAX=1000;
              printf("niveau moyens\n");
             srand(time(NULL));
           nombreMystere=(rand()%(MAX - MIN + 1))+ MIN;
           int nombreDEcoups=1;
           while(nombreMystere!=nombreEcrit);
               printf("ecrive le nombre mystere\n");
               scanf("%d", &nombreEcrit);
          if (nombreEcrit < nombreMystere)
              printf(" plus grand\n");
          else if(nombreEcrit > nombreMystere){
              printf("plus petit\n");
          }
          else{
              printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);
          }nombreDEcoups++;
          printf("voulez-vous continuer la partie ?\n");
          printf("tapez 1 pour oui ou 0 pour non\n");
          scanf("%d", &continuerpartie);
          }
          else if(choixniveau==3){
              MAX=10000;
              printf("niveau difficile");
           srand(time(NULL));
           nombreMystere=(rand()%(MAX - MIN + 1))+ MIN;
           int nombreDEcoups=1;
           while(nombreMystere!=nombreEcrit);
               printf("ecrive le nombre mystere\n");
               scanf("%d", &nombreEcrit);
          if (nombreEcrit < nombreMystere)
              printf(" plus grand\n");
          else if(nombreEcrit > nombreMystere)
              printf("plus petit\n");
          else{
              printf("felicitation tu as trouver le nombre mystere est bien %d et tu as trouver en %d coups.", nombreMystere, nombreDEcoups);
          }nombreDEcoups++;
          printf("voulez-vous continuer la partie ?\n");
          printf("tapez 1 pour oui ou 0 pour non\n");
          scanf("%d", &continuerpartie);
           }
          return 0;
          }

          -
          Edité par MarvenMolin 16 février 2019 à 22:55:37

          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2019 à 23:10:19

            1) Il ne fallait pas enlever le 'while' du début mais rectifier l'erreur (le point-virgule). (J'avais posé une question pour savoir si tu avais compris l'erreur. La première chose à faire aurait dû être de répondre à la question. Ce n'était pas une question pour être indiscret mais pour savoir s'il fallait que je donne des explications plus détaillées.)

            2) C'est la deuxième fois que tu oublies de poster le code dans l'éditeur prévu à cet effet comme expliqué dans l'un des sujets à lire avant de poster.

            3) Manifestement tu n'as pas compris l'erreur que j'avais signalée, du coup tu n'as pas vu qu'elle est reproduite plus loin, ce qui bloque à nouveau le programme :

            while(nombreMystere!=nombreEcrit);

            Pour info : le point-virgule est une erreur. Revois la syntaxe du 'while' pour bien comprendre. À cause de ce point-virgule, le programme boucle sur une instruction vide (et non sur le bloc qui suit), et la boucle est infinie puisque que l'instruction vide ne fait rien, en particulier ne modifie pas les variables de test de la condition. (Je crois que le 'while' suivant aussi est mal écrit.)

            -
            Edité par robun 16 février 2019 à 23:14:24

            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2019 à 0:22:18

              je vais aller réviser la syntase. Au sujet du point-virgule, vous dites que c,est une erreure mais dans le cours voila quel exemple on nous donne pour faire le jeu.
              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>
              
              int main ( int argc, char** argv )
              {
                  int nombreMystere = 0, nombreEntre = 0;
                  const int MAX = 100, MIN = 1;
              
                  // Génération du nombre aléatoire
              
                  srand(time(NULL));
                  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
              
                  /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */
              
                  do
                  {
                      // On demande le nombre
                      printf("Quel est le nombre ? ");
                      scanf("%d", &nombreEntre);
              
                      // On compare le nombre entré avec le nombre mystère
              
                      if (nombreMystere > nombreEntre)
                          printf("C'est plus !\n\n");
                      else if (nombreMystere < nombreEntre)
                          printf("C'est moins !\n\n");
                      else
                          printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
                  } while (nombreEntre != nombreMystere);
                  
                  return 0;
              }
              il y a bien un point virgule après le while à la ligne 31, c'est pour cette raison que j'avais également mis un point-virgule dans le miens.

              -
              Edité par MarvenMolin 18 février 2019 à 1:50:56

              • Partager sur Facebook
              • Partager sur Twitter
                18 février 2019 à 10:03:27

                Attention, tu confonds

                while (condition)
                   instruction ;
                

                avec

                do
                    instruction
                while (condition) ;
                

                Dans le deuxième cas, le point-virgule n'est pas lié à 'while' mais à 'do'. Donc en effet, tu devrais réviser la syntaxe.

                -
                Edité par robun 18 février 2019 à 10:03:52

                • Partager sur Facebook
                • Partager sur Twitter
                  20 février 2019 à 0:40:06

                  j'ai revue ma syntaxe du while et en effet, j'avais tort sur toute la ligne, merci de m'avoir remis sur le droit chemin, mais je viens de rencontrer un autre problème avec mon code. Lorsque je trouve le nombre mystere, le programme continue de me demander de mettre le nombre mystere. voila le code.
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <time.h>
                  int main()
                  {
                  int nbEcrit=0, nbMystere=0, continuePartie=1, choixDifficulter=0, MAX=0, compteur=0;
                  const int MIN=1;
                  
                      printf("===option===\n");
                      printf("1:niveau facile entre 1 a 100\n");
                      printf("2:niveau moyen entre 1 a 1000\n");
                      printf("3:niveau difficile entre 1 a 10000\n");
                      printf("vous voulez quel niveau ?\n");
                      scanf("%d", &choixDifficulter);
                   do{
                    if(choixDifficulter == 1)
                       {
                          MAX=100;
                          printf("niveau facile\n");
                       }
                  else if(choixDifficulter == 2)
                      {
                         MAX=1000;
                         printf("niveau moyens\n");
                      }
                  else if(choixDifficulter == 3)
                      {
                          MAX=10000;
                          printf("niveau difficile\n");
                      }
                          do{
                  
                               srand(time(NULL));
                              nbMystere = (rand() % (MAX - MIN + 1)) + MIN;
                  
                              printf("quel est le nombre mystere ?\n");
                  
                              scanf("%d", &nbEcrit);
                  
                          if(nbMystere < nbEcrit)
                                 printf("plus petit\n");
                  
                      else if  (nbMystere > nbEcrit)
                                printf("plus grand\n");
                  
                          else
                                  printf("bravo le nombre mystere est bien %d et vous avez reussie en %d tour\n", nbMystere, compteur);
                              compteur++;
                              
                  
                               }while(nbEcrit != nbMystere);
                  
                               printf("voulez-vous faire une autre partie ?\n");
                  
                             printf("1 pour OUI, 0 pour NON\n");
                  
                             printf("votre choix ?\n");
                  
                               scanf("%d", &continuePartie);
                  
                      }while(continuePartie==1);
                  
                  
                     return 0;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 février 2019 à 9:48:46

                    Je vois un problème : tu réinitialises le nombre mystère à chaque tour de boucle. Il faut initialiser le nombre mystère et, ensuite, faire la boucle do... while. Les lignes 33-34 doivent être situées avant la boucle. (En fait la ligne 33 doit être située au tout début du programme.)

                    (Au fait, l'affichage du menu ne devrait-il pas se faire après le premier 'do' ? Sinon on jouera toujours avec le même niveau de difficulté. Mais c'est peut-être ce que tu as prévu ?)

                    -
                    Edité par robun 20 février 2019 à 12:16:36

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 février 2019 à 11:39:40

                      On s'y retrouverait mieux si

                      1. le code était indenté correctement

                      2. les grandes parties étaient précédées par des commentaires

                      // choisir le niveau de difficulté
                      ...
                      // tirer un nombre au hasard
                      ...
                      // dérouler la partie
                      ...

                      3. les parties étaient dans des fonctions séparées (mais ça c'est la faute du cours de merde qui donne des exemples trop longs avant d'avoir expliqué à quoi servent les fonctions).

                      -
                      Edité par michelbillaud 20 février 2019 à 11:39:50

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 février 2019 à 1:55:24

                        Merci !!! Grace à vous, mon programme fonctionne correctement et j'ai mis le menu dans le premier "do" et en effet c'est bien mieux comme ça. Je vais maintenant essayer de l'améliorer en ajoutant un mode deux joueur et en améliorant un peu mon menu. Pour l'indentation, je vais essayer d'en mettre dans mes futures programmes.

                        Voila le code fonctionnelle, je le mettrais à jour au fur et à mesure si vous aviez des idées à me donner pour l'améliorer, je suis ouvert.

                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <time.h>
                        int main()
                        {
                        int nbEcrit=0, nbMystere=0, continuePartie=1, choixDifficulter=0, MAX=0, compteur=0;
                        const int MIN=1;
                        srand(time(NULL));
                        
                         do{
                             printf("===option===\n");
                            printf("1:niveau facile entre 1 a 100\n");
                            printf("2:niveau moyen entre 1 a 1000\n");
                            printf("3:niveau difficile entre 1 a 10000\n");
                            printf("vous voulez quel niveau ?\n");
                            scanf("%d", &choixDifficulter);
                        
                          if(choixDifficulter == 1)
                             {
                                MAX=100;
                                printf("niveau facile\n");
                             }
                        else if(choixDifficulter == 2)
                            {
                               MAX=1000;
                               printf("niveau moyens\n");
                            }
                        else if(choixDifficulter == 3)
                            {
                                MAX=10000;
                                printf("niveau difficile\n");
                            }
                                  nbMystere = (rand() % (MAX - MIN + 1)) + MIN;
                                do{
                        
                                    printf("quel est le nombre mystere ?\n");
                        
                                    scanf("%d", &nbEcrit);
                        
                                if(nbMystere < nbEcrit)
                                       printf("plus petit\n");
                        
                            else if  (nbMystere > nbEcrit)
                                      printf("plus grand\n");
                        
                                else
                                        printf("bravo le nombre mystere est bien %d et vous avez reussie en %d tour\n", nbMystere, compteur);
                                    compteur++;
                        
                        
                                     }while(nbEcrit != nbMystere);
                        
                                     printf("voulez-vous faire une autre partie ?\n");
                        
                                   printf("1 pour OUI, 0 pour NON\n");
                        
                                   printf("votre choix ?\n");
                        
                                     scanf("%d", &continuePartie);
                        
                            }while(continuePartie==1);
                        
                        
                           return 0;
                        }
                        
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 février 2019 à 10:11:48

                          MarvenMolin a écrit:

                           Pour l'indentation, je vais essayer d'en mettre dans mes futures programmes.

                          Il ne faut pas essayer, il faut le faire, toujours. C'est tout.

                          1. tant que c'est du code pour toi, c'est ton problème (mais tu verras que ça aide).

                          2. quand tu nous le fais voir, ça nous pique les yeux. Tu prèfèrerais sans doute qu'on consacre nos neurones à t'aider plutot qu'à nous esquinter à chercher où sont les débuts et les fins de blocs ?  Dans ce cas, ne nous complique pas la vie.

                          3. Dans tous les IDE décents, on peut remettre en forme le code automatiquement d'un coup d'un seul. Alors fais-le. Codeblocks / Format using AStyle.

                          -
                          Edité par michelbillaud 21 février 2019 à 10:12:04

                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 février 2019 à 10:50:16

                            De toute façon la plupart des éditeurs font l'identation au fur et à mesure qu'on tape le code. Par exemple quand je tape une accolade ouvrante puis "entrée", il me décale de quatre espaces à droite.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 février 2019 à 12:18:18

                              Voila ce que ça donne, avec un remise en forme sommaire

                              • indentation
                              • commentaires pour structurer le code
                              • choix de meilleurs noms de variables, déclaration là où on en a besoin

                              Tu avais deux problèmes avec ta variable compteur. Primo il faut la remettre à chaque partie, deuzio, son nom. Un nom de variable, ça n'indique pas son type  (int unEntier), ni son rôle général (int compteur), mais de préférence son rôle dans le problème. Ici il s'agit de compter les tours, donc nombreDeTours.

                              #include <stdio.h>
                              #include <stdlib.h>
                              #include <time.h>
                              
                              int main() {
                              
                                  int faireAutrePartie = 1;
                                  srand(time(NULL));
                              
                                  do {
                                      /*
                                       * Choisir le niveau de difficulté
                                       */
                                      int niveauDifficulte = 0;
                                      const int MIN = 1;
                                      int MAX = 0;
                                      printf("===option===\n");
                                      printf("1:niveau facile entre 1 a 100\n");
                                      printf("2:niveau moyen entre 1 a 1000\n");
                                      printf("3:niveau difficile entre 1 a 10000\n");
                                      printf("vous voulez quel niveau ?\n");
                                      scanf("%d", &niveauDifficulte);
                              
                                      if (niveauDifficulte == 1) {
                                          MAX = 100;
                                          printf("niveau facile\n");
                                      } else if (niveauDifficulte == 2) {
                                          MAX = 1000;
                                          printf("niveau moyens\n");
                                      } else if (niveauDifficulte == 3) {
                                          MAX = 10000;
                                          printf("niveau difficile\n");
                                      }
                                      /*
                                       * Jouer la partie
                                       */
                                     int nbMystere = (rand() % (MAX - MIN + 1)) + MIN;
                                     int nombreDeTours = 0;
                                     do {
                                          printf("quel est le nombre mystere ?\n");
                                          int essai;
                                          scanf("%d", &essai);
                                          if (nbMystere < essai) {
                                              printf("plus petit\n");
                                          } else if (nbMystere > essai) {
                                              printf("plus grand\n");
                                          } else {
                                              printf("bravo le nombre mystere est bien %d "
                                                      "et vous avez reussi en %d tours\n",
                                                      nbMystere, nombreDeTours);
                                          }
                                          nombreDeTours++;
                                      } while (essai != nbMystere);
                              
                                      /*
                                       * Demander si on veut faire une autre partie
                                       */
                                      printf("voulez-vous faire une autre partie ?\n");
                                      printf("1 pour OUI, 0 pour NON\n");
                                      printf("votre choix ?\n");
                                      scanf("%d", &faireAutrePartie);
                              
                                  } while (faireAutrePartie == 1);
                              
                                  return 0;
                              }



                              -
                              Edité par michelbillaud 21 février 2019 à 12:26:12

                              • Partager sur Facebook
                              • Partager sur Twitter

                              projet 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