Partage
  • Partager sur Facebook
  • Partager sur Twitter

générateur de résultat

Correction

Sujet résolu
    19 avril 2006 à 12:49:04

    Salut,(j'suis nouveau )
    j'suis sur Dev-C++ ,
    j'viens de finir le 1er Tp du site ,
    et je pensais avoir les connaissances nécessaires pour réaliser un similateur de résultat(une sorte lanceur de dé , qui peut lancer des poignées de 50 dés ,et des dés de 2 à 33 faces;rôliste oblige ).Donc j'ai fait une boucle dans une boucle pour pas qu'il s'arrête à chaque lancé , et heum ...Dev compile le code avec marqué Done à la fin , mais au moment d'le lancé , il y a marqué que le programme n'est pas compilé .Dès fois la compilation affiche warning'/040'.
    Une lumière pourrait'elle m'éclairer ?
    Je peux poster mon code .Merci
    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2006 à 13:02:10

      Montre nous tes sources !
      Ca sera beaucoups plus facile a trouver l'erreure.
      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2006 à 21:00:29

        ok le voici

        Citation : mon code

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

        int main(int argc, char **argv[])
        { long jet=0,comptjet=0,face = 0 ,fin = 0,resultat=0,MAX=face;
        const int MIN=1 ;

        while ( fin!= 2)
        {
        printf("Choisir nombre de face :");
        scanf("%ld",&face);
        printf("\nChoisir nombre de jets :");
        scanf("%ld",&jet);
        srand(time(NULL));
        resultat = (rand() % (MAX - MIN + 1)) + MIN;

        while(comptjet < jet)
        {
        printf("resultat = %ld",resultat);
        comptjet++;
        }

        if (comptjet = jet )
        { printf(" Arret de la simulation :\n 1\ non\n 2\ oui\n ");
        scanf("%ld",&fin);
        }
        }

        system("PAUSE");
        return 0;
        }

        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2006 à 21:08:36

          Citation : KröMagnon

          face = 0 ,MAX=face;
          resultat = (rand() % (MAX - MIN + 1)) + MIN;

          MAX c'est le nombre de face c'est ça? Parce que là, tu dis au tout début que MAX=face, sachant que tu as initialisé face à 0...
          Quand tu fais ton rand()%(etc..), MAX est encore egal à 0.

          Citation : KröMagnon

          resultat = (rand() % (MAX - MIN + 1)) + MIN;

          while(comptjet < jet)
          {
          printf("resultat = %ld",resultat);
          comptjet++;
          }

          Là tu fait un jet de dés, puis ensuite tu affiches "jet" fois le même résultat... je supose que tu veux faire "jet" résultats diférents non?
          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2006 à 21:14:27

            D'accord donc faut que ce soit dans l'ordre .ok.Cependant j'ai essayé ça résout pas le problème , ça lancerait quand même si les variables était fausses ??!
            Et pour jet , ouais je veux faire jet résultats différents.Faut peut être que je continues à lire le cours ...
            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2006 à 21:18:49

              J'dis peut être une connerie mais euh...

              Citation : KröMagnon

              long jet=0,comptjet=0,face = 0 ,fin = 0,resultat=0,MAX=face;

              Remplace "long" par "double" pour voir...
              Si ça se trouve ça n'a aucun raport mais bon... sinon je ne vois pas.

              EDIT: ah oui et euh aussi... un truc con (tellement con que je l'avais oublié)

              Citation : KröMagnon

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

              Il faut mettre une seule étoile: char* argv[]
              • Partager sur Facebook
              • Partager sur Twitter
                19 avril 2006 à 21:42:06

                Ok j'ai retapouiller tout ça avec tes suggestions hormis celle des doubles qui me semble douteuse (j'ai quand même esssayé) si je génère avec random tout ça , enfin je vois pas ce que ça pourrait intervenir.Mais heu ça marche toujours pas .
                • Partager sur Facebook
                • Partager sur Twitter
                  19 avril 2006 à 22:05:49

                  mais euh, ça te fait quoi exactement? ça ne compile meme pas??
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 avril 2006 à 22:12:40

                    ça compile , exactement comme si c'était ok mais ça se lance pas !ça me marque le projet n'est pas compilé !prise de tête = fracturation de la boite cranienne contre ce receptacle de silicium .
                    Des cas similaires sur dev ??
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 avril 2006 à 22:27:42

                      Ba écoute, moi je viens de tester ton tout premier code que tu as posé là.
                      Chez moi ça compile bien, ça se lance, ça me demande le nombre de face
                      ensuite ça me demende le nombre de jet
                      et ensuite ça me fait une erreure, j'essaye de voir d'où ça vient

                      EDIT bon alors l'erreur c'etait d'initialiser MAX à 0
                      Voilà, sinon tout le reste marche tel que tu l'as programmé
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 avril 2006 à 22:38:43

                        Ok merci ça marche toujours pas ..lol J'ai copié le code sur un nouveau projet ça marche ...HUm arRRrk.SInon y a encore quelques erreures mais je pense pouvoir me corriger c'est toujours le même resultat...

                        Citation : code optimisé

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

                        int main(int argc, char *argv[])
                        { long jet=0,face = 0 ,fin = 0,resultat=0,MAX=1;
                        const int MIN=1 ;

                        while ( fin!= 2)
                        {
                        printf("Choisir nombre de face :");
                        scanf("%ld",&face);
                        printf("\nChoisir nombre de jets :");
                        scanf("%ld",&jet);



                        while( jet>0)
                        {
                        srand(time(NULL));
                        MAX=face;
                        resultat = (rand() % (MAX - MIN + 1)) + MIN ;
                        printf("resultat = %ld \n ",resultat);
                        jet--;
                        }


                        if (jet == 0)
                        {
                        printf("Entrer 2 pour terminer simulation");
                        scanf("%ld",&fin);
                        }
                        }

                        system("PAUSE");
                        return 0;
                        }



                        j'arrives pas à ce que finalemant ça fasse random pour chaque jet ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 avril 2006 à 23:38:11

                          Citation : KröMagnon

                          ok le voici


                          • Le 2 ème parametre de main(), c'est char **argv ou char *argv[], mais pas un mix des deux...
                          • srand() doit être appelé une fois au début du code.
                          • if (comptjet = jet ) : l'opérateur de comparaison est == et non =...
                          • Il y a des séquences '\ 'dans le dernier printf(). Inconnu, comportement indéfini.

                          Il y a un problème avec MIN et MAX juste avant rand():

                          Choisir nombre de face :3

                          Choisir nombre de jets :3
                          face = 3 jet = 3 comptjet = 0 resultat = 0 MIN = 1 MAX = 0

                          Lors de l'appel de rand(), ces valeurs provoquent un % 0 - 1 + 1 = % 0 qui provoque un comportement indéfini.

                          Il faut corriger la mise à jour de ces variables.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            20 avril 2006 à 11:05:06

                            Ouais enfaite Merci c'était le problème de fonction MAX , mais bon j'ai réussi entre temps mais j'arrive toujours pas à faire regénérer un nouveau nombre rand dans chaque "jet" .Si vous suivait mon idée hein ...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 avril 2006 à 11:46:24

                              Citation : KröMagnon

                              <...>j'arrive toujours pas à faire regénérer un nouveau nombre rand dans chaque "jet" .


                              Comme il te l'a été conseillé,

                              http://www.siteduzero.com/forum-83-34079-257949.html#r257949

                              as-tu déplacé srand () ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !
                                20 avril 2006 à 11:51:25

                                genre vers où ? arpès les fonctions et je mets NULL entre les parenthèses ?Enfaite c'est vrai je comprends pas trop la formule décomposé la première srand(time(NULL)).yeah ça marche!!!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 avril 2006 à 12:01:12

                                  Citation : KröMagnon

                                  genre vers où ?


                                  Genre première instruction de main(). C'est pas dans le cours de M@teo ?

                                  Il ne faut pas utiliser de fonctions que tu ne comprends pas. Un site de référence bien utile :

                                  http://dpobel.free.fr/man/html/index.php?section=3

                                  http://dpobel.free.fr/man/html/affiche_man.php/3400/man/srand/
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Music only !

                                  générateur de résultat

                                  × 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