Programme de somme de tableau qui fonctionne pas

Résolu/Fermé
Onyx67 Messages postés 133 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 18 août 2016 - Modifié par Onyx67 le 21/04/2014 à 11:50
Onyx67 Messages postés 133 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 18 août 2016 - 21 avril 2014 à 21:35
Bonjour,

je suis actuellement en train de découvrir la programmation en C, et dans le cadre d'un cours que j'ai téléchargé, je dois faire l'exercice suivant :

" Créez une fonction sommeTableau qui renvoie la somme des valeurs contenues dans le tableau (utilisez un return pour
renvoyer la valeur). Pour vous aider, voici le prototype de la fonction à créer :
Code : C
int sommeTableau(int tableau[], int tailleTableau); "

Voici mon code(contenant sûrement beaucoup d'erreurs rajoutées entre-temps mais là n'est pas le sujet, ce qui m'intéresse c'est pourquoi est-ce que je ne parviens pas à effectuer la somme dans la boucle de la fonction moyenneTableau, le programme se lance et ensuite ne fonctionne pas...

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

//prototype de la fonction à créer
double moyenneTableau(int tableau[], int tailleTableau);

int main(int argc, char *argv[])
{
int tableau[4]={10, 15, 3};
int taille = 4 ;
moyenneTableau(tableau[4], taille);
printf("Somme : %d", somme);
//Affiche la valeur renvoyée par moyenneTableau



return 0;
}

double moyenneTableau(int tableau[], int tailleTableau)
{
int i ;
int somme = 0;

for (i = 0; i < tailleTableau; i++)
{
somme = tableau[i] + somme;
}



return somme;
}

Merci à l'avance de vos réponses :)
A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 21/04/2014 à 14:05
Bonjour,

#include <math.h>
Inutile ici. Il vaut mieux éviter d'inclure les headers inutiles.

#include <stdlib.h>
Inutile aussi ici. Mais là c'est moins gênant car tôt ou tard, tu t'en serviras probablement dans ton code.

int tableau[4]={10, 15, 3};
Ainsi, tu créés un tableau à 4 éléments : 10, 15, 3 et 0. Est-ce voulu le dernier 0 ?

moyenneTableau(tableau[4], taille);
tableau[4] est de type entier. De plus, cet entier n'existe pas car ton tableau a 4 cases. Le premier élément est : tableau[0], le dernier est tableau[3]. Ca peut faire planter le programme.
Si tu veux envoyer le tableau (ou plutôt l'adresse du premier élément du tableau), il faut écrire : moyenneTableau(tableau, taille);

printf("Somme : %d", somme);
Que vaut "somme" ? Il n'existe pas dans la fonction main().
Il aurait fallu faire : double somme; en début de main()
Puis : somme=moyenneTableau(tableau, taille); pour récupérer la valeur retournée par la fonction moyenneTableau().
De plus, "somme" est de type double. Il faut donc l'afficher en tant que telle : printf("Somme : %f\n", somme); J'ai mis aussi un '\n' à la fin pour forcer l'affichage (et puis ça sera plus propre).

Dans la fonction moyenneTableau(),
int somme = 0; => somme est de type double. Je te laisse corriger.

Et enfin, il faut diviser par le nombre d'éléments pour calculer la moyenne. Donc : return (double)somme/tailleTableau;

Sinon pour info, tu ne respectes pas l'énoncé. On te demande d'utiliser le prototype : int moyenne... et tu utilises double moyenne... Est-ce normal ?

Corrige ton code. Et si ça ne fonctionne toujours pas, reposte ton code avec les corrections. Et la prochaine fois, merci d'utiliser les balises "code" (situé à droite du bouton "souligné") et sélectionne "C" dans la liste déroulante. Sinon c'est illisible.

Cdlt,

Google is your friend
0
Onyx67 Messages postés 133 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 18 août 2016 1
21 avril 2014 à 21:35
Merci beaucoup!! Maintenant j'ai compris mon erreur, c'était d'envoyer la case n°4 du tableau alors que je voulais envoyer le tableau entier comportant 4 cases!
Sauf que j'avais pas besoin d'effectuer la précision!

Pour le reste c'est juste que c'était un code nouveau et ancien qui se mélangeaient, du coup c'était normal qu'il y avait plein d'erreurs, mais heureusement qu'on m'a donné la solution ça m'a beaucoup aidé!

Cordialement
0