Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme avec randomize()

Sujet résolu
    20 avril 2006 à 21:14:26

    Coucou voila j'ai prit un code sur un site et je voulais le tester seulement il marche pas a la compilation dev c++ me met l'erreur suivante:
    [Linker error] undefined reference to `randomize'
    je vous met tout le code vous y detecterais peut etre l'erreur:)
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    int main ()
    {
    int i;
    int x1=0,x2=0,x3=0;
    int avance = 0;
    time_t t;
    int pari;
    int premier;
    int sortie;
    int coul1,coul2,coul3;
    char car;
    /* Pari sur un cheval */
    clrscr ();
    gotoxy (1,1);
    printf ("Sur quel cheval voulez vous parier (1,2 ou 3) ?");
    /* Choix d'un cheval */
    do
    {
    sortie = 1;
    car = getch ();
    switch (car)
    {
    case '1':
    pari = 1;
    coul1 = 2;
    coul2 = 1;
    coul3 = 1;
    break;
    case '2':
    pari = 2;
    coul1 = 1;
    coul2 = 2;
    coul3 = 1;
    break;
    case '3':
    pari = 3;
    coul1 = 1;
    coul2 = 1;
    coul3 = 2;
    break;
    default:
    sortie = 0;
    printf ("%c",0x7);
    break;
    }
    } while (!sortie);
    /* Efface l'écran */
    clrscr ();
    /* Dessin de la piste */
    for (i=1; i<=80; i++)
    {
    gotoxy (i,10);
    printf ("-");
    gotoxy (i,14);
    printf ("-");
    }
    /* Initialisation des variables aléatoire */
    randomize ();
    /* Dessin des chevaux */
    do
    {
    /* Effacement du cheval 1 (position précédente) */
    gotoxy (x1,11);
    printf (" ");
    /* Affichage du cheval 1 */
    textcolor (coul1);
    x1 += random (6) + 1;
    gotoxy (x1,11);
    cprintf ("1");
    /* Effacement du cheval 2 (position précédente) */
    gotoxy (x2,12);
    printf (" ");
    /* Affichage du cheval 2 */
    textcolor (coul2);
    x2 += random (6) + 1;
    gotoxy (x2,12);
    cprintf ("2");
    /* Effacement du cheval 3 (position précédente) */
    gotoxy (x3,13);
    printf (" ");
    /* Affichage du cheval 3 */
    textcolor (coul3);
    x3 += random (6) + 1;
    gotoxy (x3,13);
    cprintf ("3");
    /* Attente */
    for (i=0; i<5000; i++)
    time (&t);
    }
    while ((x1<74) && (x2<74) && (x3<74));
    if ((x1>x2) && (x1>x3))
    premier = 1;
    else

    {
    if ((x2>x1) && (x2>x3))
    premier = 2;
    else
    {
    if ((x3>x1) && (x3>x2))
    premier = 3;
    else
    premier = 0;
    }
    }
    gotoxy (1,14);
    if (premier == pari)
    printf ("\nBravo vous avez gagné.");
    else
    {
    if (premier == 0)
    printf ("\nDésolé, il y a égalité entre deux chevaux…");
    else
    printf ("\nDésolé vous avez perdu.\nCheval n°%d vainqueur",premier);
    }
    getch ();
    return (0);
    }


    Merci de votre aide!
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 21:54:55

      Citation : corbeau

      Coucou voila j'ai prit un code sur un site et je voulais le tester seulement il marche pas a la compilation dev c++ me met l'erreur suivante:
      [Linker error] undefined reference to `randomize'


      randomize() n'est pas une fonction du C. En C, on fait

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

      int main (void)
      {
         srand ((unsigned) time (NULL));
         /* ... */

      une fois au début du programme.
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        20 avril 2006 à 22:24:09

        Tiens au fait -ed- je vois que dans le code (tapé à l'arrache mais je t'excuse) que tu proposes tu mets un unsigned.
        Personnellement je n'aime pas les dénominations unsigned / long non accompagnée. Je trouve ça de l'hérésie. :)

        Qu'en penses-tu et qu'en dit la norme / l'usage ?
        • Partager sur Facebook
        • Partager sur Twitter
          20 avril 2006 à 22:37:32

          Citation : Kayl

          Tiens au fait -ed- je vois que dans le code (tapé à l'arrache mais je t'excuse) que tu proposes tu mets un unsigned.
          Personnellement je n'aime pas les dénominations unsigned / long non accompagnée. Je trouve ça de l'hérésie.
          Qu'en penses-tu et qu'en dit la norme / l'usage ?


          A l'arrache oui ! (une '(' et un ';' qui manquent ! Corrigés).

          unsigned est une forme contractée de unsigned int. C'est parfaitement autorisé par la norme et d'usage courant. Mais dans la vrai vie, j'utilise ceci :

          http://mapage.noos.fr/emdel/clib/ed/inc/types.h

          tu m'as compris... J'aurais donc mis (uint).

          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            20 avril 2006 à 23:42:12

            Ca me rassure que toi personnellement tu utilises unsigned int ou une abréviation "logique" :)
            • Partager sur Facebook
            • Partager sur Twitter
              20 avril 2006 à 23:59:08

              Merci pour votre aide , cependant ed tu dit et vu tes connaissance je pense pas que tu te trompe mais randomize qui est dans ce code vient d'un cours sur le C!
              Donc la formule que tu ma donnée me fait changer tout le code non? enfin pas tout mais ce qui concerne le random?
              Merci !
              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2006 à 0:04:00

                conio.h n'est pas standard.
                Je connais pas toute l'histoire mais il me semble que c'était à la base pour C++ Builder ou un truc du genre.

                Alors forcément ils se sont ptet amusé à tout redéfinir mais ça serait mieux d'utiliser des vrais trucs et de se passer de conio.

                Et les goto(x,y) et cls ? L'API win32 a la meme chose, donc autant les utiliser directement.
                • Partager sur Facebook
                • Partager sur Twitter
                  21 avril 2006 à 0:07:45

                  ha bon je savais pas qu'on pouvait utilisé autre chose que conio.h pour ce type de fonctions !
                  pourrait tu m'orienter vers une bibliotheque qui ferai la meme chose mais standars? au faite j'ai verifier pour randomize et random ils ce trouvent dans stdlib/h normalement donc je devrait pouvoir m'en servir :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 avril 2006 à 0:23:01

                    Citation : corbeau

                    ha bon je savais pas qu'on pouvait utilisé autre chose que conio.h pour ce type de fonctions !
                    pourrait tu m'orienter vers une bibliotheque qui ferai la meme chose mais standars? au faite j'ai verifier pour randomize et random ils ce trouvent dans stdlib/h normalement donc je devrait pouvoir m'en servir :(



                    Je sais pas où tu as trouvé cette information mais non, ils ne sont pas dans stdlib.h (version non trafiquée en tout cas).

                    Utiliser le code de l'API win 32 ne sera pas "portable" mais au moins sera compilable partout sous windows (pas comme conio.h) :

                    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/console_functions.asp

                    Regarde du coté de :
                    GetStdHandle
                    SetConsoleCursorPosition

                    Et si tu ne trouves rien pour remplacer le clrscr() utilise system("cls"); mais il doit bien y a voir qq chose, pas le temps de trop chercher.

                    Bon courage.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 avril 2006 à 1:45:44

                      merci je vais reguarder tout sa!
                      pour ma source pour le random et randomize voir le liens <lien url="http://lesouriciergris.free.fr/"></lien>
                      section cours language C, puis niveau 1 ensuite remise en forme !
                      la personne en parle pour l'excercice 3 :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 avril 2006 à 7:45:25

                        <hs>

                        Citation : Kayl

                        Ca me rassure que toi personnellement tu utilises unsigned int ou une abréviation "logique" :)


                        Mouais, ya un tas de programmeurs C tout aussi bons qui feront l'inverse, alors bon, ça ne veut pas dire grand chose. Puis il y a des gens qui utilisent 'unsigned int' mais 'long' et 'unsigned long' et non 'long int' et 'unsigned long int' et un tas de pratiques plus ou moins singulières entre les deux. Parce que bon, après ça peut devenir sacrément long à taper (et comme ce n'est pas un seul mot, l'auto-completion c'est pas pour tout de suite non plus) pour 'unsigned long long int' quand même.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 avril 2006 à 9:19:58

                          Citation : corbeau

                          merci je vais reguarder tout sa!
                          pour ma source pour le random et randomize voir le liens <lien url="http://lesouriciergris.free.fr/"></lien>
                          section cours language C, puis niveau 1 ensuite remise en forme !
                          la personne en parle pour l'excercice 3 :)


                          Citation : Le Souricier Gris


                          1.1 Prologue
                          Ce cours utilise comme compilateur le Borland C 2.0. Celui-ci est disponible sur le
                          Web.


                          La messe est dite.

                          Quand on fait un cours de C sérieux, on ne se réfère pas à un compilateur particulier. Dans le suite, dès le 2ème exemple

                          #include <stdio.h>
                          #include <conio.h>
                          int main ()
                          {
                             clrscr (); /* Efface l’écran */
                             puts ("Bonjour");
                             getch (); /* Attendre */
                             return (0);
                          }

                          il est fait référence à des particularités de Borland comme <conio.h>, ou plus tard, randomize()/random()... avec un joyeux mélange non maitrisé entre conio et stdio...

                          Ce n'est pas sérieux. Laisse tomber.

                          Pour ton information, randomize() et random() sont des inventions bin pratiques de Borland (Turbo C et la suite) écrites en C standard. Je les ai reprises ici :

                          http://mapage.noos.fr/emdel/clib/ed/inc/random.h

                          Mais elles ne font pas parties du langage C.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            21 avril 2006 à 22:59:25

                            Merci Ed pour ton eclaircissement ! en tou cas c'est bien dommage que ce cours ne soit pas serieux dans la mesure où je letrouvais bien fait , et les petits exercices avec leur correction etait bien fait , tant pis pour moi lool! cependant ton fichier.h si j'ai bien compris pourrait me permettre d'utilser random et randomize en l'incluant a mon projet?
                            Merci pour ton aide Ed!
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 avril 2006 à 23:02:03

                              Citation : corbeau

                              cependant ton fichier.h si j'ai bien compris pourrait me permettre d'utilser random et randomize en l'incluant a mon projet?

                              Oui.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !
                                21 avril 2006 à 23:06:13

                                Ok c'est super gentil Ed et continu a aider les debutants comme tu le fait et tu le fait bien, on en a besoin ! :)
                                • Partager sur Facebook
                                • Partager sur Twitter

                                probleme avec randomize()

                                × 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