Débutant en language C, j'ai réalisé les 5 exos tableaux, dans un fichier main.c unique, ca marchait bien :-). Puis j'ai tenté de les séparer pour respecter la programmation modulaire (main.c, tableau.c et tableau.h). seulement à ce moment la, la compilation me retourner l'erreur suivante :
undefined reference to Somme_tableau
j'ai donc tenté de trouver une solution sur le net, et j'ai cru comprendre que j'avais moyen de solution mon problème en supprimant et recréant un main.c, ce que j'ai fait et maintenant c'est pire ! j'ai l'impression que la compilation n'a pas lieu...
Pensez vous pouvoir m'aider la dessus.
Voici mon programme :
le fichier main.c
#include <stdio.h>
#include <stdlib.h>
#include "tableau.h"
int main(int argc, char *argv[])
{
int tableau[4], i=0, Sommetableau=0, tableau_copie[4]={0};
double Moyennetableau=0;
printf("\nVoici le tableau initiale:\n");
for (i=0;i<4;i++)
{
printf("\tla valeur de tableau[%d] est: %d \n", i, tableau[i]);
}
printf("\n\nVoici l exercice 1:\n");
Sommetableau = Somme_tableau (tableau,4);
printf("\tla somme des valeurs du tableau est de %d\n",Sommetableau);
printf("\n\nVoici l exercice 2:\n");
Moyennetableau = moyenneTableau(tableau,4);
printf("\tla moyenne des valeurs du tableau est de %f\n",Moyennetableau);
printf("\n\nVoici l exercice 3:\n");
printf("\tle tableau qui recevra la copie est initie a 0 des sa declaration:\n");
for (i=0;i<4;i++)
{
printf("\tla valeur de tableau copie[%d] est: %d\n", i, tableau_copie[i]);
}
copie(tableau, tableau_copie,4);
printf("\n\tle tableau copie est le suivant:\n");
for (i=0;i<4;i++)
{
printf("\tla valeur de tableau copie[%d] est: %d \n", i, tableau_copie[i]);
}
printf("\n\nVoici l exercice 4:\n");
maximumTableau(tableau_copie,4,60);
for (i=0;i<4;i++)
{
printf("la valeur de tableau copie [%d] est: %d \n", i, tableau_copie[i]);
}
printf("\n\nVoici l exercice 5:\n");
triertableau(tableau,4);
for (i=0;i<4;i++)
{
printf("la valeur de tableau [%d] est: %d \n", i, tableau[i]);
}
return 0;
}
le fichier tableau.c
#include <stdio.h>
#include <stdlib.h>
#include "tableau.h"
int Somme_tableau (int* tableau, int taille_tableau)
{
int i=0, somme_tableau_f=0;
for (i=0;i<taille_tableau;i++)
{
somme_tableau_f= *(tableau+i)+somme_tableau_f;
}
return somme_tableau_f;
}
double moyenneTableau(int tableau[], int taille_tableau)
{
int i=0;
double somme_tableau_f=0, Moyennetab=0;
for (i=0;i<taille_tableau;i++)
{
somme_tableau_f= tableau[i]+somme_tableau_f;
}
Moyennetab=somme_tableau_f/taille_tableau;
return Moyennetab;
}
void copie(int tableauOriginal[], int tableauCopie[], int taille_tableau)
{
int i=0;
for (i=0;i<taille_tableau;i++)
{
tableauCopie[i]= tableauOriginal[i];
}
}
void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
{
int i=0;
for (i=0;i<tailleTableau;i++)
{
if (tableau[i]>valeurMax)
{
tableau[i]= 0;
}
}
}
void triertableau(int tableau[], int tailleTableau)
{
int ValeurIntermediair=0,i=0;
while (i<tailleTableau-1)
{
if(tableau[i+1]<tableau[i])
{
ValeurIntermediair = tableau[i];
tableau[i]=tableau[i+1];
tableau[i+1]=ValeurIntermediair;
printf("i vaut %d\n",i);
i=0;
}
else
{
i++;
}
}
}
et le fichier tableau.h
int Somme_tableau (int*, int taille_tableau);
double moyenneTableau(int tableau[], int tailleTableau);
void copie(int tableauOriginal[], int tableauCopie[], int tailleTableau);
void maximumTableau(int tableau[], int tailleTableau, int valeurMax);
void triertableau(int tableau[], int tailleTableau);
Auriez vous une idée de comment je pourrais solutionner mon problème ?
il semblerait que j'ai perdu le .o ...
-------------- Build: Debug in Tableau_exercice1 (compiler: GNU GCC Compiler)---------------
Linking stage skipped (build target has no object files to link)
Nothing to be done (all items are up-to-date).
Merci de votre aide :-)
- Edité par TayebHabani 11 janvier 2021 à 22:42:11
Je ne sais pas si tu travailles avec un IDE tel que Code::Blocks ou Visual Studio. Si tu as accès à la commande de compilateur, il faut mentionner tous les fichiers .c dont tu as besoin. Ça pourrait ressembler à ceci: gcc -o prog main.c tableau.c et tu exécuterais le fichier prog
Le Tout est souvent plus grand que la somme de ses parties.
Merci rouloude pour l'information sur la manière de poster le code.
@ PierrotleFou, Concernant l'IDE que j'utilise, c'est code blocks. je ne sais pas comment avoir accès à la commande du compilateur, je vais essayer de voir ça. si vous avez une explication, je suis preneur, merci de votre aide.
je suis en déplacement professionnel et n'ai pas la possibilité de vérifier que c'était bien ça l'erreur. je le ferai à mon retour et vous tiendrai au jus.
de retour de déplacement, je viens de tester et ça fonctionne !!! MERCIIIII!!!!!!
Cours exo tableau
× 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.
Le Tout est souvent plus grand que la somme de ses parties.