Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème avec amélioration du + et du -

ajout de difficulté et nombre de coup limités

    5 juillet 2006 à 12:14:24

    Bonjour, j'ai voulu améliorer le jeu du plus et du moins en y rajoutant un niveau de difficulté et un nombre de coup limité.Cependant ce code ne fonctionne pas et je ne comprends pas pourquoi.Pour programmer j'utilise visual c++ express.Merci d'avance pour vos futurs reponses.
    /*

    Plus ou Moins
    -------------

    Réalisé par M@teo21, pour les cours du Site du Zér0
    www.siteduzero.com (cours de programmation en C / C++ pour débutants)

    Création le : 20/12/2005

    */



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


    int main ( int argc, char** argv )
    {
        long nombreMystere = 0, nombreEntre = 0, nombreCoup = 0, choixMenu, compteur = 0;
        const long MAX = 100, MIN = 1;

            printf ("niveau de difficulté\n\n");
        printf ("1.facile\n");
            printf ("2.difficile\n\n");
            printf ("votre choix:\n");
            scanf  ("%d\n", &choixMenu);

            case 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("%ld", &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);
       break;
            case 2:
    srand(time(NULL));
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    do
                    {
                    printf("attention la c'est plus difficile vous n'avez que dix coup.")
                    printf ("quelle est le nombre mystere?");
                    scanf ("%d", &nombreEntre);
    if (nombreMystere > nombreEntre)
                printf("C'est plus !\n\n");
                printf("la variable nombre de coup vaut %d\n", &compteur);
                nombreCoup++;
            else if (nombreMystere < nombreEntre)
                printf("C'est moins !\n\n");
                            printf("la variable nombre de coup vaut %d\n", &compteur);
               nombreCoup++;
                    else if (nombreCoup = 10)
                            printf("dommage la prochaine fois peut etre");
            else
                printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
        } while (nombreEntre != nombreMystere);
    break;
    default
    printf ("ce choix n'est pas valide");
            break;
        system("PAUSE");
    }
     

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2006 à 12:17:53

      tu as oublié le switch il y a des cases pour comparer quelquechose avec 1 ou 2 mais on ne sais pas quoi !
      le code exact :
      /*

      Plus ou Moins
      -------------

      Réalisé par M@teo21, pour les cours du Site du Zér0
      www.siteduzero.com (cours de programmation en C / C++ pour débutants)

      Création le : 20/12/2005

      */



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


      int main ( int argc, char** argv )
      {
          long nombreMystere = 0, nombreEntre = 0, nombreCoup = 0, choixMenu, compteur = 0;
          const long MAX = 100, MIN = 1;

              printf ("niveau de difficulté\n\n");
          printf ("1.facile\n");
              printf ("2.difficile\n\n");
              printf ("votre choix:\n");
              scanf  ("%d\n", &choixMenu);
      switch(choixMenu){
              case 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("%ld", &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);
         break;
              case 2:
      srand(time(NULL));
          nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                      do
                      {
                      printf("attention la c'est plus difficile vous n'avez que dix coup.")
                      printf ("quelle est le nombre mystere?");
                      scanf ("%d", &nombreEntre);
      if (nombreMystere > nombreEntre)
                  printf("C'est plus !\n\n");
                  printf("la variable nombre de coup vaut %d\n", &compteur);
                  nombreCoup++;
              else if (nombreMystere < nombreEntre)
                  printf("C'est moins !\n\n");
                              printf("la variable nombre de coup vaut %d\n", &compteur);
                 nombreCoup++;
                      else if (nombreCoup = 10)
                              printf("dommage la prochaine fois peut etre");
              else
                  printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
          } while (nombreEntre != nombreMystere);
      break;
      default
      printf ("ce choix n'est pas valide");
              break;
          system("PAUSE");
      }
      }
      re-edit :D tu as aussi oublier toutes les accolades ({}) des if tu peux ne pas en mettre a conditions qu'il n'y est qu'une seule fonction apres or ce n'est pas le cas du coup tes else foirent ;)
      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2006 à 12:42:26

        Citation : binariman

        le code exact


        Pas vraiment, il reste quelques erreurs :

        else if (nombreCoup = 10)

        Il faut mettre deux fois le signe =, c'est une comparaison

        Plus généralement, les tests sont mis n'importe comment, ça m'étonnerait que ça fasse se que tu souhaite, essaye plutôt avec ceci :

          nombreCoup++;
          if (nombreMystere > nombreEntre)
            {
            printf("C'est plus !\n\n");
            printf("la variable nombre de coup vaut %d\n", &compteur);
            }

          else if (nombreMystere < nombreEntre)
            {
              printf("C'est moins !\n\n");
              printf("la variable nombre de coup vaut %d\n", &compteur);
            }

          if (nombreMystere == nombreEntre)
            printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
          else if (nombreCoup == 10)
            printf("dommage la prochaine fois peut etre");


        En effet, si il est trop grand ou trop petit, ça va, mais sinon il ne faut pas mettre un else if pour le nombre de coup : ça ferai qu'on ne passerai jamai dans le else if (nombreCoup == 10 )

        De plus, dans le do {} while, il ne faut pas oublier de vérifier aussi la condition nombreCoup!=10 : ça donne :

        do
        {
        }while(nombreEntre != nombreMystere && nombreCoup != 10);
        • Partager sur Facebook
        • Partager sur Twitter
          5 juillet 2006 à 14:44:56

          Merci pour vos réponses elles m'ont bien aidées. Cependant une erreure,que je n'arrive pas à résoudre, persiste dans mon programme:
          c:\documents and settings\le patron\mes documents\visual studio 2005\projects\main.c(96) : error C2061: erreur de syntaxe : identificateur 'system'
          Merci d'avance pour toutes vos réponses.

           /*

          Plus ou Moins
          -------------

          Réalisé par M@teo21, pour les cours du Site du Zér0
          www.siteduzero.com (cours de programmation en C / C++ pour débutants)

          Création le : 20/12/2005

          */



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


          int main ( int argc, char* argv )
          {
              long nombreMystere = 0, nombreEntre = 0, nombreCoup = 0, choixMenu;
              const long MAX = 100, MIN = 1;

                  printf ("niveau de difficulté\n\n");
              printf ("1.facile\n");
                  printf ("2.difficile\n\n");
                  printf ("votre choix:\n");
                  scanf  ("%d\n", &choixMenu);
          switch(choixMenu){
                  case 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("%ld", &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);
             break;
            system ("PAUSE");
                  case 2:
          srand(time(NULL));
              nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                          do
                          {
                          printf("attention la c'est plus difficile vous n'avez que dix coup.");
                                          printf ("quelle est le nombre mystere?:");
                          scanf ("%d", &nombreEntre);
           nombreCoup++;
            if (nombreMystere > nombreEntre)
              {
              printf("C'est plus !\n\n");
              printf("la variable nombre de coup vaut %d\n", &nombreCoup);
              }

            else if (nombreMystere < nombreEntre)
              {
                printf("C'est moins !\n\n");
                printf("la variable nombre de coup vaut %d\n", &nombreCoup);
              }

            if (nombreMystere == nombreEntre)
            {
              printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
            }
            else if (nombreCoup == 10)
            {
              printf("dommage la prochaine fois peut etre");
            }
          break;
                  default:
          printf("ce choix n'est pas valide");
                                          }
            system ("PAUSE");

          }             


          }
          • Partager sur Facebook
          • Partager sur Twitter
            5 juillet 2006 à 14:48:43

            Change le system ("PAUSE"); par :
            printf ("Press enter to continue ...\n");
            getchar();


            Apparemment ton erreur indique un problème avec system donc je pese à ça mais bon c'est p-e autre chose !
            • Partager sur Facebook
            • Partager sur Twitter
              5 juillet 2006 à 14:49:56

              Citation : Fradow


              do
              {
              }while(nombreEntre != nombreMystere && nombreCoup != 10)


              Pas exactement, il faut rajouter un point virgule après le while() ;)


              Citation : Fradow


              c:\documents and settings\le patron\mes documents\visual studio 2005\projects\main.c(96) : error C2061: erreur de syntaxe : identificateur 'system'




              system ("PAUSE");


              Essaye d'enlever le system("PAUSE"); ;)
              • Partager sur Facebook
              • Partager sur Twitter
                5 juillet 2006 à 14:53:32

                Citation : k4dw4

                Citation : Fradow


                do
                {
                }while(nombreEntre != nombreMystere && nombreCoup != 10)




                D'ailleurs je vois pas cette ligne !!! o_O
                • Partager sur Facebook
                • Partager sur Twitter
                  5 juillet 2006 à 15:03:43

                  Oups, post édité j'ai rectifié l'erreur, merci de le signaler
                  Pierre89, cette ligne n'apparai pas avant car il a mis :

                  do
                  {
                  //pas mal de code
                  }while (nombreEntre != nombreMystere);

                  Ce qui a l'évidence ne correspond pas à ce qu'il veut faire ( s'arrêter à 10 coups )
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 juillet 2006 à 15:20:33

                    Bon je ne sais pas si c'est une erreur ou c'est moi qui me trompe ( mais sa serait bizzare que vous ne l'ayez pas vu si c'est une faute ;) )

                    Citation : Broots05


                    printf ("2.difficile\n\n");
                            printf ("votre choix:\n");
                            scanf  ("%d\n", &choixMenu);
                    switch(choixMenu){
                            case 1:



                    Le scanf ne devrait il pas etre %ld au lieu de %d ?
                    Désolé si je me trompe... :-°
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 juillet 2006 à 15:24:57

                      En effet, choiMenu est un long donc %ld ! Bien vu !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 juillet 2006 à 1:03:07

                        héhé !! J'ai trouvé quelque chose que les grands de la prog n'avaient pas trouvé nananananère ! :)
                        *Part courir en chantant dans la rue, tout fier.* :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 juillet 2006 à 11:22:32

                          Citation : Pierre89

                          Citation : k4dw4

                          Citation : Fradow


                          do
                          {
                          }while(nombreEntre != nombreMystere && nombreCoup != 10)




                          le mieux je crois serait de mettre plutôt un nombreCoup < 10, nan ? ( je suis perfectionnsite :/ )
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            6 juillet 2006 à 11:37:22

                            Tu as mis :


                            printf ("2.difficile\n\n");
                                    printf ("votre choix:\n");
                                    scanf  ("%d\n", &choixMenu);
                            switch(choixMenu){
                                    case 1:


                            Il ne faut jamais mettre de "\n" dans un scanf
                            Le code correct est :


                            printf ("2.difficile\n\n");
                                    printf ("votre choix:\n");
                                    scanf  ("%ld", &choixMenu);
                            switch(choixMenu){
                                    case 1:


                            ça seras déjà mieux ;) .
                            Hybrix
                            • Partager sur Facebook
                            • Partager sur Twitter
                              6 juillet 2006 à 11:51:54

                              Citation : PsyKo

                              le mieux je crois serait de mettre plutôt un nombreCoup < 10, nan ? ( je suis perfectionnsite :/ )


                              Ici c'est pas très utile, car la boucle oblige de passer par nombreCoup == 10. Ceci dit c'est possible aussi, et c'est cette solution qui sera privilégiée plus tard ( notamment pour la gestion du temps ).
                              • Partager sur Facebook
                              • Partager sur Twitter
                                7 juillet 2006 à 17:31:37

                                Merci pour toutes vos réponses mais malgrés tout je galère toujours autant.Alors voila je voulais savoir si quelqu' un ne pourrait pas me donner une version a lui du code pour faire le jeu du plus et du moins avec niveau de difficulté et compteur de coup et aussi si possible coup limité( tu as mis tant de coup alors tu as perdu) merci d'avance.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 juillet 2006 à 19:01:47

                                  Valà celui-là marche mais je te conseille de le faire par toi même :
                                  Secret (cliquez pour afficher)
                                  #include <stdio.h>
                                  #include <stdlib.h>
                                  #include <time.h>

                                  int main(int argc, char *argv[])
                                  {
                                    int autrePartie = 1;
                                    long choixPartie = 0;
                                  while (autrePartie == 1)
                                  {
                                    // Choix du mode de jeu
                                    long choixMode;
                                    printf ("*** Menu principal ***\n\n");
                                    printf ("1. Mode solo \n2. Mode multijoueur (2 joueurs)\n\n");
                                    printf ("Votre choix : ");
                                    scanf ("%ld", &choixMode);
                                    printf ("\n\n\n");
                                   
                                    // D&#65533;laration des principales variables et constantes
                                    const long MIN = 1;
                                    long nombreMystere, nombreChercheur, compteur = 0, MAX;
                                   
                                    // Choix de la difficult&#65533;
                                    long choixNiveau;
                                    printf ("** Menu de niveau **\n\n");
                                    printf ("1. Nombre compris entre 1 et 100\n");
                                    printf ("2. Nombre compris entre 1 et 1000\n");
                                    printf ("3. Nombre compris entre 1 et 10000\n\n");
                                    printf ("Votre choix : ");
                                    scanf ("%ld", &choixNiveau);
                                    printf ("\n\n\n");
                                    switch (choixNiveau)
                                    {
                                          case 1 :
                                               MAX = 100;
                                               break;
                                          case 2 :
                                               MAX = 1000;
                                               break;
                                          case 3 :
                                               MAX = 10000;
                                               break;
                                          default :
                                                  printf ("Il faut choisir un element du menu\n\n");
                                    }
                                   
                                    // Mode 1 joueur
                                    if (choixMode == 1)
                                    {
                                    srand(time(NULL));
                                    nombreMystere = (rand() % (MAX-MIN+1)) + MIN;
                                    }
                                    // Mode 2 joueurs
                                    else if (choixMode == 2)
                                    {
                                         printf ("Joueur 1, entrez un nombre entre 1 et %ld puis appuyez sur entree : ", MAX);
                                         scanf ("%ld", &nombreMystere);
                                         printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                                    }
                                    else
                                    {
                                        printf ("Il n'existe aucun autre mode\n\n\n");
                                        printf ("Press enter to continue ...\n");
                                        getchar ();
                                        exit (0);
                                    }
                                   
                                    // Jeu lui-m&#65533;e
                                    printf ("J'ai cherche un nombre entier entre 1 et %ld (inclus) : c'est le nombre mystere !\n", MAX);
                                    printf ("Alors ... ?\n\n");
                                    do
                                    {
                                           compteur++;
                                           printf ("Quel est le nombre mystere ? ");
                                           scanf ("%ld", &nombreChercheur);
                                           if (nombreMystere < nombreChercheur)
                                              printf ("C'est moins !\n\n\n");
                                           else if (nombreMystere > nombreChercheur)
                                                printf ("C'est plus !\n\n\n");
                                           else if (nombreMystere == nombreChercheur)
                                                printf ("Bravo ! Vous avez trouve le nombre mystere en %ld coups !\n\n\n\n", compteur);
                                    } while (nombreChercheur != nombreMystere && compteur < 10);
                                   
                                    if (compteur == 10)
                                        printf ("Perdu ! Vous n'aviez que 10 coups !\n\n");
                                   
                                    // Une autre partie ?
                                    printf ("Une autre partie ?\n");
                                    printf (" 1. Oui\n 2. Non\n");
                                    printf ("Votre choix : ");
                                    scanf ("%ld", &choixPartie);
                                    if (choixPartie == 1)
                                    {   
                                        autrePartie = 1;
                                        printf ("\n\n\n\n");
                                    }           
                                    else if (choixPartie == 2)
                                    {
                                         autrePartie = 0;
                                         printf ("\n\n\n\n");
                                    }
                                    else
                                        printf ("Error system, veuillez fermer le programme.\n\n\n\n");
                                  }   
                                   
                                    printf ("Press enter to continue ...\n");   
                                    getchar ();
                                    return 0;
                                  }
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  problème avec amélioration du + et du -

                                  × 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