Les tableaux en C

Résolu
scorpion077 Messages postés 44 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 14 mai 2009 - 17 oct. 2007 à 12:34
scorpion077 Messages postés 44 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 14 mai 2009 - 17 oct. 2007 à 14:46
Bonjour,

je commence en C et j'essai de developper un prog sous CodeBlock qui calcule la moyenne des valeur d'un tableau.

Tout d'abord, j'ai crée une fonction "moyenneTableau" qui renvoie donc la moyenne des valeurs d'un tableau:

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


double moyenneTableau(long tableau[], long tailleTableau);

/*    Fonction qui attribue une moyenne         */


double moyenneTableau(long tableau[], long tailleTableau)
{
    long i;
    double moyenne = 0.00;
    for ( i=0 ; i<tailleTableau ; i++ )
    {
        moyenne = moyenne + tableau[i];
    }


    moyenne = moyenne / tailleTableau;
    return moyenne;
}


/*    Fin fonction      */

Par la suite, je fais appel à cette fonction dans le main :

int main(int argc)
{
    /*    exo 2    */
    double moy;
    long tableau[3] = { 2, 5, 53 } ;
    moy = moyenneTableau(tableau,3);
    printf("%f",moy);


 return 0;
}

Et au final, mon IDE ne veut pas compiler mon code...   
Voici son message :

.objs\exo2.o:exo2.c:(.text+0x0): multiple definition of `moyenneTableau'
.objs\main.o:main.c:(.text+0x6f): first defined here
collect2: ld returned 1 exit status

Process terminated with status 1 (0 minutes, 0 seconds)

Merci d'avance  

4 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 oct. 2007 à 13:28
Salut
Tu as 2 fonctions qui ont le meme nom moyenneTableau
: une dans exo2.c
et l'autre dans main.c
Tu n'as qu'à changer le nom de cette fonction.
A+
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
17 oct. 2007 à 14:34
Ce ne sont pas des fichiers sources que l'on inclue normalement. Ce sont des fichiers header (.h) contenant seulement des prototypes, des déclarations de structure etc.

C++ (@++)<!--
3
scorpion077 Messages postés 44 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 14 mai 2009
17 oct. 2007 à 14:00
Merci beaucoup!

En fait, j'avais d'abord placé la fonction "moyennetableau" dans un autre fichier C nommé "exo2.C", tout en ajoutant l include exo2.C dans main.C.

Suite à ta réponse, j'ai recrée un projet dans lequel j'ai mis ma fonction dans main.c.

Seulement je ne comprend pas pourquoi ca n'avait pas marché la première fois, avec la fonction dans exo2.C.
Voici mes 2 page C :

_main.C :
#include <stdio.h>
#include <stdlib.h>
#incclude "exo2.C"


int main(int argc)
{
    /*    exo 2    */
    double moy;
    long tableau[3] = { 2, 5, 53 } ;
    moy = moyenneTableau(tableau,3);
    printf("%f",moy);


 return 0;
}

_et exo2.c :

double moyenneTableau(long tableau[], long tailleTableau);


/*    Fonction qui attribue une moyenne         */


double moyenneTableau(long tableau[], long tailleTableau)
{
    long i;
    double moyenne = 0.00;
    for ( i=0 ; i<tailleTableau ; i++ )
    {
        moyenne = moyenne + tableau[i];
    }


    moyenne = moyenne / tailleTableau;
    return moyenne;
}


/*    Fin fonction      */

merci d'avance
0
scorpion077 Messages postés 44 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 14 mai 2009
17 oct. 2007 à 14:46
Merci beaucoup
0
Rejoignez-nous