Probleme compilateur en C

Moustiquet Messages postés 254 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
#include <stdio.h>
#include <stdlib.h> /*librairie standard en C*/
#include <time.h>/* pour la fonction time*/

/*Cette fontionne retourne un nombre choisi au hasard entre 2 bornes*/

int aleatoire (int borneInf, int borneSup) {
    return  rand()%  (borneSup - borneInf +1) - borneInf;
}
void afficher (int tableau [], int nbElem, int debut, int fin)
{  
     int i;
     printf ("liste des %d premiers et %d derniers elements:\n",debut, fin);
     for (i=0; i<nbElem; i++)
       if( i<debut || i >= nbElem-fin)
       printf("%4d)  %10d\n", i, tableau[i]);
       else
       if (i==debut)
       printf("%4d) ect...\n", i);
       printf("\n\n");
       }
       void determinerMinMax(int tableau[], int nbElem)
       {
            int i;
            int mini, maxi;
            mini= maxi= tableau[0];
            for (i-0;i<nbElem; i++)
            {
                if(tableau [i]<mini)
                mini=tableau[i];
                if (tableau[i]>maxi)
                  maxi=tableau[i];
                  }
            printf("Valeur la plus petite: %6d\n",mini);
            printf("Valeur la plus grande : %6\n", maxi);
            printf ("\n\n");
            }
            void trier  (int tableau[], int nbElem)
            {
                 int i, j, indMin;
                 int tempo;
                 for (i=0;i< nbElem - 1 ; i++)
                 {
       
                     indMin=1;
                     for(j=i + 1;j < nbElem;j++)
                     if(tableau[j]< tableau [indMin])
                     indMin=j;
              if (indMin != i){
              tempo =tableau[i];
              tableau[i]= tableau  [indMin];
              tableau [indMin]= tempo;
              }
              }
              }
              int main()
              {
       #define BORNE1   10000/*taillle du tableau*/
       const int BORNE2 = 9000,
              VAL_MIN=500,
              VAL_MAX = 30000;
              
       int valeur[BORNE1];
       int nbElem;/*nombre d'element du tableau*/
       int i;
       strans(time(0));
       nbElem=aleatoire(BORNE2,BORNE1);
       
       for(i=0;i< nbElem; i++)
       valeur[i]=aleatoire (VAL_MIN,VAL_MAX);
       
       afficher (valeur, nbElem, 5, 10);
       determinerMinMax(valeur, nbElem);
       trier (valeur, nbElem);
       afficher (valeur, nbElem, 7,3);
       printf("\n");
       system("pause");
       return 0;
       }


Dans ce programme le compilateur me renvoie ce message, mais je ne comprend pas ce qu'il veut dire

C:\DOCUME~1\Claude\LOCALS~1\Temp\ccSwaaaa.o(.text+0x28e) In function `main':
[Linker error] undefined reference to `strans' C:\DOCUME~1\Claude\LOCALS~1\Temp\ccSwaaaa.o(.text+0x28e) ld returned 1 exit status
Merci
Configuration: SustemeMicosoft Windows version 5.1.2600 Srevive 2 Processeurx86 Family 15 modele4 BiosPhoenix Tech memoire physique totale 512

3 réponses

  1. fiu
     
    Hello

    Il semblerait que ton compilateur digère mal cet appel à une fonction strans(time(0)) au debut de main()
    on a l'impression qu'il ne la connait pas.
    je connais pas cette fonction et quand j'interroge ggogle, il semble pas la connaître
    0
  2. fiu
     
    Une petite remarque en passant. Maintenant que tu commences à t'aguerrir en C, penses donc aux gens qui ne sont pas plongés dans ton code depuis des heures : essaies de le mettre en forme car ça leur facilite énormément la lecture.
    Évidemment, les pro du C n'ont pas forcément besoin de cette présentation pour trouver le bug, mais comme des non-pro peuvent aussi chercher à te répondre, ça serait vraiment sympa d'avoir une petite pensée pour eux.

    exemple de mise en forme:
    #include <stdio.h>
    #include <stdlib.h> /*librairie standard en C*/
    #include <time.h>/* pour la fonction time*/
    #define BORNE1   10000/*taillle du tableau*/
    
    /*Cette fontionne retourne un nombre choisi au hasard entre 2 bornes*/
    
    int aleatoire (int borneInf, int borneSup)
    {
      return  rand()%  (borneSup - borneInf +1) - borneInf;
    }
    
    void afficher (int tableau [], int nbElem, int debut, int fin)
    {  
      int i;
      printf ("liste des %d premiers et %d derniers elements:\n",debut, fin);
      for (i=0; i<nbElem; i++)
        if( i<debut || i >= nbElem-fin)
          printf("%4d)  %10d\n", i, tableau[i]);
        else
         if (i==debut)
           printf("%4d) ect...\n", i);
      printf("\n\n");
    }
    
    void determinerMinMax(int tableau[], int nbElem)
    {
      int i;
      int mini, maxi;
      mini= maxi= tableau[0];
      for (i-0;i<nbElem; i++)
      {
        if(tableau [i]<mini)
          mini=tableau[i];
        if (tableau[i]>maxi)
          maxi=tableau[i];
      }
      printf("Valeur la plus petite: %6d\n",mini);
      printf("Valeur la plus grande : %6\n", maxi);
      printf ("\n\n");
    }
    
    void trier  (int tableau[], int nbElem)
    {
      int i, j, indMin;
      int tempo;
      for (i=0;i< nbElem - 1 ; i++)
      {
        indMin=1;
        for(j=i + 1;j < nbElem;j++)
          if(tableau[j]< tableau [indMin])
            indMin=j;
        if (indMin != i)
        {
          tempo =tableau[i];
          tableau[i]= tableau  [indMin];
          tableau [indMin]= tempo;
        }
      }
    }
    
    int main()
    {
      const int BORNE2  =  9000,
                 VAL_MIN =   500,
                 VAL_MAX = 30000;
      int valeur[BORNE1];
      int nbElem;/*nombre d'element du tableau*/
      int i;
      strans(time(0));
      nbElem=aleatoire(BORNE2,BORNE1);
      for(i=0;i< nbElem; i++)
      valeur[i]=aleatoire (VAL_MIN,VAL_MAX);
      afficher (valeur, nbElem, 5, 10);
      determinerMinMax(valeur, nbElem);
      trier (valeur, nbElem);
      afficher (valeur, nbElem, 7,3);
      printf("\n");
      system("pause");
      return 0;
    }
    
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Il suffit de lire le message même s'il n'est pas agréable à lire : [Linker error] undefined reference to `strans' On cherche donc à quelle ligne, cette fonction est utilisée.
    Et là on trouve en début de main : strans(time(0)); fonction non standard.
    Il s'agit de la fonction srand. Donc remplace strans(time(0)) par srand(time(NULL));

    Cdlt
    0