Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de boucle .....

    5 décembre 2006 à 18:47:50

    Salut!

    Je suis débutant en C++ et je cherche à créer un programme pour lancer un nombre de dés variable et compter les résultats au dessus d'un certain nombre. J'ai donc programmé une boucle et créé un programme aléatoire dedans :


    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    using namespace std;

    int main(int argc, char *argv[])
    {const long MAX = 6, MIN = 1;
       
       
        int compteur=0;
        int de=0;
        int somme=0;
       
       
        while (compteur < 10)
        {srand(time(NULL));
        de=(rand() % (MAX - MIN + 1)) + MIN;
        cout<<"resultat des lances de des : "<<de<<endl;
        if (de>=4) {somme=somme+1;} ;compteur++;}
       
        cout<<"nombre de des affichants 4 ou plus  : "<<somme<<endl;
       
       
        system("PAUSE");
        return EXIT_SUCCESS;
    }




    Problème : "de" est toujours égale au même nombre!!
    Comment programmé "de" de façon à ce que le résultat diffère à chaque tour de boucle??

    Merci de votre aide!
    • Partager sur Facebook
    • Partager sur Twitter
      5 décembre 2006 à 18:52:59

      Citation : kenzaar


          while (compteur < 10)
          {srand(time(NULL));
          de=(rand() % (MAX - MIN + 1)) + MIN;


      srand() ne doit être appelé qu'une seule fois.

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
      Anonyme
        5 décembre 2006 à 18:57:58

        Tu avais mal placé l'instruction srand(time(NULL));

        Code corrigé :
        #include <iostream>


        using namespace std;

        int main(int argc, char** argv)
        {
        const long MAX = 6, MIN = 1;


        int compteur=0;
        int de=0;
        int somme=0;

        srand(time(NULL));

        while (compteur < 10)
        {
           
        de=(rand() % (MAX - MIN + 1)) + MIN;
        cout<<"resultat des lances de des : "<<de<<endl;

        if (de>=4) {somme=somme+1;} ;compteur++;}

        cout<<"nombre de des affichants 4 ou plus : "<<somme<<endl;


        system("PAUSE");

        return EXIT_SUCCESS;
        }



        Revois l'indentation du code ainsi que l'indentation...
        • Partager sur Facebook
        • Partager sur Twitter
          5 décembre 2006 à 18:59:29

          Effectivement.....

          Merci beaucoup!! :D:D:D
          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2006 à 19:07:51

            Citation : Polele


            Code corrigé :
            <snip code pas du tout indenté !>

            Revois l'indentation du code ainsi que l'indentation...


            Des fois qu'y'en ai une qui pète. Judicieux conseil...

            #include <iostream>

            using namespace std;

            int main (int argc, char **argv)
            {
               const long MAX = 6, MIN = 1;

               int compteur = 0;
               int de = 0;
               int somme = 0;

               srand (time (NULL));

               while (compteur < 10)
               {

                  de = (rand () % (MAX - MIN + 1)) + MIN;
                  cout << "resultat des lances de des : " << de << endl;

                  if (de >= 4)
                  {
                     somme = somme + 1;
                  }; /* WTF ? */
                  compteur++;
               }

               cout << "nombre de des affichants 4 ou plus : " << somme << endl;

               system ("PAUSE");

               return EXIT_SUCCESS;
            }
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              5 décembre 2006 à 19:11:36

              Salut
              vous avez parlé d'indentation.
              Pouvez vous m'expliquer ce que c'est??
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                5 décembre 2006 à 19:24:53

                décaler vers la droite le code source après le début d'un bloc puis le décaler vers la gauche après la fin du bloc.
                sous codeblocks, il y a un plug-in qui s'en charge automatiquement.


                { // début du premier bloc, donc décalage vers la droite


                   { // début du deuxième bloc, donc décalage vers la droite

                      printf("truc bidule") ;
                      a = 6 + b ;
                   
                      // etc...

                   } // fin du deuxième bloc, donc décalage vers la gauche


                } // fin du premier bloc (pas de décalage vers la gauche car le texte est déjà "collé" à l'extrème gauche)


                c'est grâce à cela en autre que du code source est lisible
                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2006 à 19:53:45

                  Citation : saphir

                  Salut
                  vous avez parlé d'indentation.
                  Pouvez vous m'expliquer ce que c'est??



                  Avant :

                  http://www.siteduzero.com/forum-83-95335-834675.html#r834675

                  Après:

                  http://www.siteduzero.com/forum-83-95335-834716.html#r834716
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !
                    6 décembre 2006 à 0:53:23

                    J'ai encore un problème...

                    Quand je construis deux de ces boucles successivement avec des mons différents pour les différents paramétres, mais des valeurs identiques, il semble qu'il réutilise les premiers résultats :

                    #include <cstdlib>
                    #include <iostream>

                    using namespace std;

                    int main(int argc, char *argv[])
                    {
                        const long MAX = 6, MIN = 1;


                    int compteur=0;
                    int de=0;
                    int somme=0;

                    srand(time(NULL));

                    while (compteur < 10)
                    {
                       
                    de=(rand() % (MAX - MIN + 1)) + MIN;

                    if (de>=4) {somme=somme+1;};cout<<"nombre des de: "<<de<<endl ;compteur++;}

                    cout<<"nombre de des affichants 4 ou plus : "<<somme<<endl;





                    int compteur1=0;
                    int somme1=0;
                    int de1=0;
                    srand(time(NULL));

                    while (compteur1 < 10)
                    {
                       
                    de1=(rand() % (MAX - MIN + 1)) + MIN;

                    if (de1>=4) {somme1=somme1+1;};
                    cout<<"nombre des de: "<<de1<<endl;compteur1++;}

                    cout<<"nombre de des affichants 4 ou plus : "<<somme1<<endl;


                    system("PAUSE");

                    return EXIT_SUCCESS;
                    }


                    somme=somme1 et les résultats des 10 lancés de "de" sont identiques aux résultats de "de1". J'ai du oublier quelque chose...??.....
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 décembre 2006 à 9:59:20

                      Citation : kenzaar


                      #include <cstdlib>
                      #include <iostream>

                      using namespace std;

                      int main(int argc, char *argv[])
                      {
                          const long MAX = 6, MIN = 1;


                      int compteur=0;
                      int de=0;
                      int somme=0;

                      srand(time(NULL));

                      while (compteur < 10)
                      {
                         
                      de=(rand() % (MAX - MIN + 1)) + MIN;

                      if (de>=4) {somme=somme+1;};cout<<"nombre des de: "<<de<<endl ;compteur++;}

                      cout<<"nombre de des affichants 4 ou plus : "<<somme<<endl;





                      int compteur1=0;
                      int somme1=0;
                      int de1=0;
                      srand(time(NULL));

                      while (compteur1 < 10)
                      {
                         
                      de1=(rand() % (MAX - MIN + 1)) + MIN;

                      if (de1>=4) {somme1=somme1+1;};
                      cout<<"nombre des de: "<<de1<<endl;compteur1++;}

                      cout<<"nombre de des affichants 4 ou plus : "<<somme1<<endl;


                      system("PAUSE");

                      return EXIT_SUCCESS;
                      }



                      Si malgré nos recommandations tu t'obstines à présenter ton code comme un goret, je ne vois pas pourquoi je le lirais...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !
                        6 décembre 2006 à 12:28:48

                        Citation : -ed-


                        Si malgré nos recommandations tu t'obstines à présenter ton code comme un goret, je ne vois pas pourquoi je le lirais...



                        Je veux pas dire mais c'est quand même fort ça... Que tu ne sois pas d'accord ,ok mais de là à traiter les gens de goret!! :colere2::colere:
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 décembre 2006 à 16:20:19

                          Citation : volent

                          mais de là à traiter les gens de goret!! :colere2::colere:


                          http://mapage.noos.fr/emdel/goret.htm
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !

                          Problème de boucle .....

                          × 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