Partage
  • Partager sur Facebook
  • Partager sur Twitter

nouveau probleme avec rand

    4 janvier 2006 à 19:46:25

    voila g un probleme dans mon code g un tirage de nombre aleatoire et quand il y a une boucle de while fait et bien il ne le fait plus il n y a plus de nombre qui sorte
         do{

         printf("combien d'allumette a enlever?(1 , 2 ou 3)\n");
         scanf("%ld" , &nombreJoueur);
                     if(nombreJoueur==1)
                     {
                     nombreAllumette = nombreAllumette-1;
                     }
                     else if(nombreJoueur==2)
                     {
                     nombreAllumette = nombreAllumette-2;
                     }
                     else if(nombreJoueur==3)
                     {
                     nombreAllumette = nombreAllumette-3;
                     }
         srand(time(NULL));
         nombreCpu = (rand() % (3 - 1 + 1)) + 1;
                     if(nombreCpu==1)
                     {
                     nombreAllumette = nombreAllumette-1;
                     printf("l'ordinateur a retire 1 allumette\n");
                     }
                     else if(nombreCpu==2)
                     {
                     nombreAllumette = nombreAllumette-2;
                     printf("l'ordinateur a retire 2 allumette\n");
                     }
                     else if(nombreCpu==3)
                     {
                     nombreAllumette = nombreAllumette-3;
                     printf("l'ordinateur a retire 3 allumette\n");
                     }
         printf("il reste %ld allumette\n\n" ,nombreAllumette);
         }while(nombreAllumette==0);
    • Partager sur Facebook
    • Partager sur Twitter
      4 janvier 2006 à 19:49:51

      c'est que tu t'es trompé dans la condition.
      dans le while, c'est une condition de continuation et tnon de sortie.
      remplace :
      }while(nombreAllumette==0);

      par
      }while(nombreAllumette>0);

      voilà.
      • Partager sur Facebook
      • Partager sur Twitter
        4 janvier 2006 à 19:51:10

        Ta boucle while est fausse c'est while (nombreAlumette!=0), while execute le code TANT QUE la condition est VRAIE :)

        Ton code est de plus pas très optimisé tu as plein de if inutile ;)
        • Partager sur Facebook
        • Partager sur Twitter
          4 janvier 2006 à 19:52:35

          ba avce ton idee sa marche encore moin car jarrive meme pas a avoir un seul rand il sarrete a la premiere boucle
          • Partager sur Facebook
          • Partager sur Twitter
            4 janvier 2006 à 19:57:55

            Pour éviter les if je te conseil de remplacer
            if(nombreJoueur==1)
                             {
                             nombreAllumette = nombreAllumette-1;
                             }
                             else if(nombreJoueur==2)
                             {
                             nombreAllumette = nombreAllumette-2;
                             }
                             else if(nombreJoueur==3)
                             {
                             nombreAllumette = nombreAllumette-3;
                             }

            par
            nombreAllumette -= nombreJoueur;


            • Partager sur Facebook
            • Partager sur Twitter
              4 janvier 2006 à 20:00:30

              Salut. Déjà innitialise ton générateur avant d'entrer dans la boucle. Ensuite pourquoi tu fais pas


              nombreAllumette -= nombreJoueur;


              plutot que de faire 3 if ?

              Tu peux faire de meme pour l'ordinateur :


              nombreAllumette -= nombreCpu;
              printf("L'ordinateur a retire %ld allumettes\n", nombreCpu);


              par contre je demande à ceux qui connaissent :

              Citation : r1pp3r


              nombreCpu = (rand() % (3 - 1 + 1)) + 1;



              n'est il pas optimisable par :


              nombreCpu = (rand() % 3) + 1;


              car 3 - 1 + 1 = 3 ^^

              Voilà @ pluch
              • Partager sur Facebook
              • Partager sur Twitter
                4 janvier 2006 à 20:00:52

                merci beaucoup pour le conseil mai mon probleme c le rand car c lui qui bloke mon mini jeu
                • Partager sur Facebook
                • Partager sur Twitter
                  4 janvier 2006 à 20:26:33

                  Ben ça dépends, ça peut être du au type de variable de NombreCpu, mais en elle-même, la syntaxe du rand() ne pose pas de problème... Je suis plutôt d'accord avec les autres, si tu modifie pas ta condition, c'est normal que ta boucle ne s'éxécute qu'une seule fois. Regarde donc le type de variable, l'erreur peut venir de là (et on peut pas la vérifier, c'est pas dans l'extrait que t'as donné).
                  a+
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 janvier 2006 à 20:36:00

                    ba g mit long en type de variable
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 janvier 2006 à 20:45:42

                      Et bah, comme rand() revoie une variable de type int, ça provoque (je pense) une incompatibilité, et donc ça fait rater ton programme... Toutefois, c'est bizarre que ton compilateur te le dise pas, donc c'est pas sur que l'erreur vienne de là (mais tu perd rien à essayer)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 janvier 2006 à 7:08:48

                        Citation : <!--nico-->

                        Et bah, comme rand() revoie une variable de type int, ça provoque (je pense) une incompatibilité, et donc ça fait rater ton programme... Toutefois, c'est bizarre que ton compilateur te le dise pas, donc c'est pas sur que l'erreur vienne de là (mais tu perd rien à essayer)


                        Non, ca n'a rien avoir, un long peut être converti implicitement en int et vice versa (mais pour long~>int peut yavoir perte de données)

                        S'il oulait bien nous dire ce qu'il se passe rééllement on pourrait l'aider, parc eque c'est pas ses bouts de phrases écrit en SMS qui nous aide :)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        nouveau probleme avec rand

                        × 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