Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de choix à la fin du programme

J'essaye d'améliorer le jeu du "plus" ou "moins"

Sujet résolu
Anonyme
    9 février 2006 à 21:18:19

    J'essaye d'améliorer le programme du "plus" ou "moins" de m@teo21.
    Mais le problème c'est que, bah ça déconne ! :p
    Tout à la fin du programme, j'ai créé une boucle do ... while pour vérifier si l'on veut recommencer le jeu ou pas.
    Comme choix il y a :
    - 0 pour non
    - 1 pour oui
    Quand je mets 0 il me dit " je n'ai pas compris ta réponse ", et pareil si je mets 1 ...
    Help please ? ^^
    Voici mon code :
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
     char partie;
     do
     {
      long choix, max, min=1,nombreMystere, utilisateur, fois=0, compte=0;
      do
      {
      if(compte != 0)
      {printf("Je n'ai pas compris votre choix.\n");}
      printf("Choisissez un mode de difficulte : 1, 2, 3, 4, 5 ou 6\n");
      scanf("%ld", &choix);
      switch(choix){
      case 1: max=10; break;
      case 2: max=100; break;
      case 3: max=1000; break;
      case 4: max=10000; break;
      case 5: max=100000; break;
      case 6: max=1000000; break;
      default : compte++; break;
      }
      }//end while
      while(compte != 0);
      printf("Vous avez choisi le niveau %ld\n", choix);
      srand(time(NULL));
      nombreMystere = (rand() % (max - min + 1)) + min;
      printf("Ca y est, j'ai trouve un nombre compris entre %ld et %ld\n", min, max);
      printf("Essayes de le deviner, aller vas y, entres un nombre :");
      scanf("%ld", &utilisateur);
      printf("\n");
      while(utilisateur != nombreMystere)
       {
         if(utilisateur<nombreMystere)
         {printf("Mon nombre est plus grand que %ld.\n\n", utilisateur);}
         else if(utilisateur>nombreMystere)
         {printf("Mon nombre est plus petit que %ld.\n\n", utilisateur);}
         else if(utilisateur==nombreMystere)
         {printf("Bravo, tu as trouve le nombre que j'avais devine !\n");}
         else
         {printf("Hein ? Desole mais je n'ai pas compris...\n");}
         fois++;
         printf("Reessayes de trouver le nombre que j'ai en tete :");
         scanf("%ld", &utilisateur);
       }
      printf("J'ai du t'aider %ld fois avant que tu ne trouves mon nombre.\n", fois);
      do
      {
      printf("Veux tu recommencer ?\n0 - Non\n1 - Oui\n");
      scanf("%ld", &partie);
      if(partie != 0 || partie != 1)
      {printf("Je suis desole mais je n'ai pas compris ta reponse\n");}
      }//end while
      while(partie != 0 || partie != 1);
     }//end while
     while(partie);
     //end GAME
     return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      9 février 2006 à 21:29:08

      Roh lalalalalaaa et on se plein de mon indentation XDDD Wait je regarde :)

      EDIT: Bon moi je ferrai comme ca:
      int partie = 1;
         while (partie == 1) //
            {
         // tout ton code
       printf("voulez vous recommencer?? 1. Oui, 2. Non");
       scanf("%d", &partie)
         }


      Chacun sa méthode :)

      Re-EDIT: après constatation, un while vaut mieux qu'un if ;)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        9 février 2006 à 21:48:24

        Citation : Gambit2099

        Roh lalalalalaaa et on se plein de mon indentation XDDD Wait je regarde :)

        EDIT: Bon moi je ferrai comme ca:

        int partie = 1;
           while (partie == 1) //
              {
           // tout ton code
         printf("voulez vous recommencer?? 1. Oui, 2. Non");
         scanf("%d", &partie)
           }



        Chacun sa méthode :)

        Re-EDIT: après constatation, un while vaut mieux qu'un if ;)


        Merci d'avoir répondu ! ;)
        Mais en fait, je n'ai pas trop compris ce que tu voulais que je fasse, parceque mon do while qui entoure tout mon code, j'en fait quoi ?
        Tu pourrais pas me dire ce que vaut pour toi le "tout ton code" o_O
        Merci ;)

        Edit : ah oui, et tant qu'on y est, je sais pas si t'as compilé ce code source, mais au moment où il nous demande quel niveau on veut, si je tape mettons " zef;jhrh " ( n'importe quoi en fait ), il déconne sur la boucle et m'écris à l'infini "Je ne comprends pas votre choix" ...
        Je ne sais pas si m@teo21 a dit comment remédier à ce problème, car à vrai dire... euh ... j'ai commencé le C hier soir, et euh... y faut que j'aborde les fonctions pour finir la partie 1 ^^ ...
        • Partager sur Facebook
        • Partager sur Twitter
          9 février 2006 à 21:55:07

          A mon avis l'erreur se situe ici :
          if(partie != 0 || partie != 1)


          En effet, tu as mis un "ou" : donc quand tu tapes 0, c'est différent de 1 : la condition est vérifiée, et quand tu tapes 1, ben c'est différent de 0, donc c'est vérifié aussi. :p Il faut mettre un "et" (&&) dans la condition pour que ça marche.
          • Partager sur Facebook
          • Partager sur Twitter
            9 février 2006 à 22:00:04

            De plus tu ne dis pas au pc ce qu'il doit faire si la condition :

            if(partie != 0 || partie != 1)


            ... n'est pas vérifiée.

            Il te faut donc mettre un else.

            Donc insère :

            else break;


            ... après ta dernière instance de if.

            Voili.

            ++.

            PS: quand il n'y a qu'une seule instruction pour le if, les accolades sont faculatives : penses-y, ça allège le code !
            • Partager sur Facebook
            • Partager sur Twitter
              9 février 2006 à 22:06:26

              Pfiouuuuuuuuuuuu je me suis pris la tête 25min sur ton code et j'avais trouvé un moyen (mais pas trop propre) j'ai voulu le corriger et boum plus rien T__T"

              Bref il m'a bien pris la tête =)

              Bon j'ai retrouvé le truc qui marche (mais y a pas de boucle lol)

              [CODE SUPPRIMER voir plus bas]

              J'ai ajouté un system("CLS"); pour que sa fasse propre!
              EDIT: Grilled, on t'as donné la solution. En clair +30min de ma vie foutu à néant merci les gars ;):D

              Re-Re-EDIT: comme j'aime pas faire la motié ce que j'ai commencer, j'ai corriger ton code grâce au infos des posteurs d'au dessus ;)
              PS: il marche =)

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

              int main(int argc, char *argv[])
              {
               char partie;

                long choix, max, min=1,nombreMystere, utilisateur, fois=0, compte=0, recommence = 1;
                  while (recommence ==1)
                     {
                do
                {
                if(compte != 0)
                {printf("Je n'ai pas compris votre choix.\n");}
                printf("Choisissez un mode de difficulte : 1, 2, 3, 4, 5 ou 6\n");
                scanf("%ld", &choix);
                switch(choix){
                case 1: max=10; break;
                case 2: max=100; break;
                case 3: max=1000; break;
                case 4: max=10000; break;
                case 5: max=100000; break;
                case 6: max=1000000; break;
                default : compte++; break;
                }
                }//end while
                while(compte != 0);
                printf("Vous avez choisi le niveau %ld\n", choix);
                srand(time(NULL));
                nombreMystere = (rand() % (max - min + 1)) + min;
                printf("Ca y est, j'ai trouve un nombre compris entre %ld et %ld\n", min, max);
                printf("Essayes de le deviner, aller vas y, entres un nombre :");
                scanf("%ld", &utilisateur);
                printf("\n");
                while(utilisateur != nombreMystere)
                 {
                   if(utilisateur<nombreMystere)
                   {printf("Mon nombre est plus grand que %ld.\n\n", utilisateur);}
                   else if(utilisateur>nombreMystere)
                   {printf("Mon nombre est plus petit que %ld.\n\n", utilisateur);}
                   else if(utilisateur==nombreMystere)
                   {printf("Bravo, tu as trouve le nombre que j'avais devine !\n");}
                   else
                   {printf("Hein ? Desole mais je n'ai pas compris...\n");}
                   fois++;
                   printf("Reessayes de trouver le nombre que j'ai en tete :");
                   scanf("%ld", &utilisateur);
                 }
                printf("J'ai du t'aider %ld fois avant que tu ne trouves mon nombre.\n", fois);
                 do  {
                     
                printf("Veux tu recommencer ?\n0 - Non\n1 - Oui\n");
                scanf("%d", &recommence);
                if(recommence == 1)
                { printf("Okay\n");
                  system("CLS"); }
               
                else if(recommence == 0)
                { printf("byebye ");
                  system("PAUSE");
                  return 0; }
                 
                  else
                  { printf("mauvais choix")}
                 } while (recommence != 1 && recommence != 0);
                       }
               return 0;
              }


              ++ (pour de bon)...
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                9 février 2006 à 22:16:00

                Yeah merci tout le monde, je vous remercie trop pour m'avoir consacré du temps ( surtout Gambit lol, désolé de t'avoir gaché 25 minutes :-° ).
                Le principal, c'est que ça marche !
                Bon aller, j'ai une bonne nouvelle à vous annoncer ... LE NOUVEAU CHAPITRE C EST SORTIT IL Y A MÊME PAS 10 MINUTES !!!
                Aller merci tout le monde ;)
                @+
                • Partager sur Facebook
                • Partager sur Twitter
                  9 février 2006 à 22:17:01

                  Ouééééééééééééééé =)
                  Mais je vais devoir y aller LOL ^^
                  Merci quand même ;) ++
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 février 2006 à 1:38:25

                    J'ai fait une version trompeuse

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

                    int main(int argc, char *argv[])
                    {
                    char partie;

                    long choix, max, min=1,nombreMystere, utilisateur, fois=0, compte=0, recommence = 1;
                    while (recommence ==1)
                    {
                    do
                    {
                    if(compte != 0)
                    {printf("Je n'ai pas compris votre choix.\n");}
                    printf("Entre 1 !\n");
                    scanf("%ld", &choix);
                    switch(choix){
                    case 1: max=1000000; break;

                    default : compte++; break;
                    }
                    }//end while
                    while(compte != 0);
                    printf("Vous avez effectuer la bonne consigne!!!\n");
                    srand(time(NULL));
                    nombreMystere = (rand() % (max - min + 1)) + min;
                    printf("Ca y est, j'ai trouve un nombre compris entre 1 et 100\n", min, max);
                    printf("Essayes de le deviner, aller vas y, entres un nombre :");
                    scanf("%ld", &utilisateur);
                    printf("\n");
                    while(utilisateur != nombreMystere)
                    {
                    if(utilisateur<nombreMystere)
                    {printf("Mon nombre est plus grand que %ld.\n\n", utilisateur);}
                    else if(utilisateur>nombreMystere)
                    {printf("Mon nombre est plus petit que %ld.\n\n", utilisateur);}
                    else if(utilisateur==nombreMystere)
                    {printf("Bravo, tu as trouve le nombre que j'avais devine !\n");}
                    else
                    {printf("Hein ? Desole mais je n'ai pas compris...\n");}
                    fois++;
                    printf("Reessayes de trouver le nombre que j'ai en tete :");
                    scanf("%ld", &utilisateur);
                    }
                    printf("J'ai du t'aider %ld fois avant que tu ne trouves mon nombre.\n", fois);
                    do {

                    printf("Veux tu recommencer ?\n0 - Non\n1 - Oui\n");
                    scanf("%d", &recommence);
                    if(recommence == 1)
                    { printf("Okay\n");
                    system("CLS"); }

                    else if(recommence == 0)
                    { printf("byebye ");
                    system("PAUSE");
                    return 0; }

                    else
                    { printf("mauvais choix"); }
                    } while (recommence != 1 && recommence != 0);
                    }
                    return 0;
                    }

                    Stop rendu a ce point vous devez essayer le code
                    _______________________________________________



                    en fait la valeur maxi ne concorde pas avec ce qui est dans le texte
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème de choix à la fin du programme

                    × 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