Programme de somme de tableau qui fonctionne pas
Résolu
Onyx67
Messages postés
150
Statut
Membre
-
Onyx67 Messages postés 150 Statut Membre -
Onyx67 Messages postés 150 Statut Membre -
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 :)
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 :)
2 réponses
-
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 -
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