Partage
  • Partager sur Facebook
  • Partager sur Twitter

Premier TP

Valeur toujours entre 1 et 20 000

    18 mai 2006 à 0:16:54

    Bonjour !

    Voila, j'ai essayé de mettre un intervalle différent selon la difficulté choisie par le joueur et quoique je fasse, il prend toujours la plus grosse valeur possible...

    Voici mon code :

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

    int main(int argc, char *argv[])
    {
        //Variables
        long valJoueur = 0, coup = 0, nbMystere = 0, difficulte = 0, maximum;
        const long MIN = 1, MAX = maximum;

        //Fonction random pour le nombre Mystere
        srand(time(NULL));
        nbMystere = (rand() % (MAX - MIN + 1)) + MIN;

        // Instructions

        printf("====== Choisissez la difficulte ! ====== \n \n");

        printf("1: Tres Facile ==> nombre compris entre 1 et 50 \n");
        printf("2: Facile ======> nombre compris entre 1 et 100 \n");
        printf("3: Normal ======> nombre compris entre 1 et 500 \n");
        printf("4: Difficile => nombre compris entre 1 et 1 000 \n");
        printf("5: Tres difficile ====> nombre entre 1 et 5 000 \n");
        printf("6: Ultime niveau ====> Nombre entre 1 et 20 000 \n \n");
        printf("Quel niveau de difficulte avez vous choisi ? (entrez le nombre)");
        scanf("%ld", &difficulte);

        switch (difficulte)
        {
            case 1:
                printf("Vous avez choisi le niveau Tres facile... Ne faites pas trop de coup ! C'est la honte sinon =)");
                maximum = 50;
                break;
            case 2:
                printf("Vous avez choisi le niveau facile... ca ne devrait pas etre trop dur ;-)");
                maximum = 100;
                break;
            case 3:
                printf("Vous avez choisi le niveau Normal... niveau qui se complique =) Bon courage");
                maximum = 500;
                break;
            case 4:
                printf("Vous avez choisi le niveau Difficile... ça devient chaud par ici =)");
                maximum = 1000;
                break;
            case 5:
                printf("Vous avez choisi le niveau Tres Difficile... Votre nombre de coup va augmenter :-P");
                maximum = 5000;
                break;
            case 6:
                printf("Voici le niveau ULTIME !! Allez vous avoir de la chance ou allez vous devenir fou ?");
                maximum = 20000;
                break;
            default:
                printf("Votre selection n'est pas correcte ! Vous n'avez pas envie de jouer ou n'est-ce qu'une erreur ?");
                break;
        }

        printf("\n \n \n");

            do // On utilise la boucle Do...While pour executer au moins une fois la boucle quand il n'y a aucune donnée d'envoyée
            {
                printf("Quel est le nombre Mystere ? ");
                scanf("%ld", &valJoueur);
                coup++;

                if (nbMystere > valJoueur)
                {
                    printf("C'est plus \n \n");
                }
                else if (nbMystere < valJoueur)
                {
                    printf("C'est moins \n \n");
                }
                else
                {
                    printf("\nBravo ! Vous avez trouve le nombre mystere en %ld coup(s) \n \n", coup);
                }
            } while (nbMystere != valJoueur);

            //Mise en Pause
            system("PAUSE");

            //Fin du programme
            return 0;
    }


    Quelqu'un à une idée de l'erreur que j'ai commis ? :(

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2006 à 0:55:32

      Citation : Anthos59

      Quelqu'un à une idée de l'erreur que j'ai commis ? :(

      Merci d'avance !


      Le tirage doit être fait en fonction de la gamme de valeurs...
      pseudo-code

         srand()
         max := choisir_la_difficulte()
         NombreMystere := rand(max)

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        18 mai 2006 à 0:58:32

        Salut :D !!

        Pourquoi tu utilises la variable Maximum dans ton Switch tant que tu ne vas pas l'utiliser pour la variable nbMystere .... :-° .

        Citation : Anthos59



        if (nbMystere > valJoueur)
                    {
                        printf("C'est plus \n \n");
                    }
                    else if (nbMystere < valJoueur)
                    {
                        printf("C'est moins \n \n");
                    }
                    else
                    {
                        printf("\nBravo ! Vous avez trouve le nombre mystere en %ld coup(s) \n \n", coup);
                    }
                } while (nbMystere != valJoueur);




        Pourquoi tu utilises les accolades ? Si tu as une seule condition tu peux faire par exemple comme ca :


        if (nbMystere > valJoueur) printf("C'est plus \n \n");
        else if (nbMystere < valJoueur) printf("C'est moins \n \n");
        else printf("\nBravo !Resolu en %ld coup(s) \n \n", coup);
                     


        Ton code devient plus facile a lire comme ca .

        Merci .
        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2006 à 6:32:28

          Il faut que tu mette la ligne

          nbMystere = (rand() % (maximum - MIN + 1)) + MIN;

          après ton premier switch parceque pour le moment tu tire un nombre avant d'avoir choisi la valeur limite
          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2006 à 13:54:35

            Citation : medkarim

            Pourquoi tu utilises les accolades ? Si tu as une seule condition tu peux faire par exemple comme ca :


            if (nbMystere > valJoueur) printf("C'est plus \n \n");
            else if (nbMystere < valJoueur) printf("C'est moins \n \n");
            else printf("\nBravo !Resolu en %ld coup(s) \n \n", coup);


            Ton code devient plus facile a lire comme ca .


            La question de la lisibilité est discutable. Par contre les accolades facilitent la mise au point, la maintenance et l'évolution du code. Il n'y a pas vraiment d'intérêt à les retirer...
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              18 mai 2006 à 17:41:49

              long valJoueur = 0, coup = 0, nbMystere = 0, difficulte = 0, maximum;
              const long MIN = 1, MAX = maximum;

              pour moi c'est ca qui bugue : tu cherches a modifier une constante.

              declare et attribue la valeur de maximum a la constante apres le choix du niveau. et mets le random donc apres la constante.
              • Partager sur Facebook
              • Partager sur Twitter
                18 mai 2006 à 18:01:52

                Super, ça fonctionne ! Merci à tous ;)

                Et en ce qui concerne la lisibilité du code, j'ai l'habitude de travailler en Php et de faire de cette façon, ça me permet de ne pas etre déstabilisé :)

                A bientôt et encore merci ! ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2006 à 20:58:40

                  bonjour
                  essaie ceci

                   switch (difficulte)
                      {
                          case 1:
                              printf("Vous avez choisi le niveau Tres facile... Ne faites pas trop de coup ! C'est la honte sinon =)");
                             MAX = 50;
                              break;
                          case 2:
                              printf("Vous avez choisi le niveau facile... ca ne devrait pas etre trop dur ;-)");
                              MAX = 100;
                              break;
                          case 3:
                              printf("Vous avez choisi le niveau Normal... niveau qui se complique =) Bon courage");
                              MAX = 500;
                              break;
                          case 4:
                              printf("Vous avez choisi le niveau Difficile... ça devient chaud par ici =)");
                              MAX = 1000;
                              break;
                          case 5:
                              printf("Vous avez choisi le niveau Tres Difficile... Votre nombre de coup va augmenter :-P");
                              MAX = 5000;
                              break;
                          case 6:
                              printf("Voici le niveau ULTIME !! Allez vous avoir de la chance ou allez vous devenir fou ?");
                              MAX = 20000;
                              break;
                          default:
                              printf("Votre selection n'est pas correcte ! Vous n'avez pas envie de jouer ou n'est-ce qu'une erreur ?");
                              break;
                      }

                  et initialise MAX a 0 au début ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Premier TP

                  × 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