Programme de somme de tableau qui fonctionne pas
Résolu
Onyx67
Messages postés
132
Date d'inscription
Statut
Membre
Dernière intervention
-
Onyx67 Messages postés 132 Date d'inscription Statut Membre Dernière intervention -
Onyx67 Messages postés 132 Date d'inscription Statut Membre Dernière intervention -
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 :)
A voir également:
- Programme de somme de tableau qui fonctionne pas
- Tableau word - Guide
- Tableau ascii - Guide
- Formule somme excel colonne - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
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
#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
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