Ma division ne marche pas
Résolu
itachi78
-
itachi78 -
itachi78 -
Bonjour,
g un proble dans le programme ci-desssous g cree une fonction ki calcule la moyenne des valeurs de mon tableau mais mon programme affiche une moyenne de zero alors kelle devrait etre de 7. J'aimerais que vous me disiez d'ou peut venir le probleme car je vois vraiment pas.
Programme :
#include <stdio.h>
#include <stdlib.h>
void afficheTableau(int tableau[], int tailleTableau);
int sommeTableau(int tableau[], int tailleTableau);
double moyenneTableau(int tableau[], int tailleTableau);
int main()
{
int tableau[4] = {3, 4, 10, 11};
afficheTableau(tableau, 4);
sommeTableau(tableau, 4);
moyenneTableau(tableau, 4);
return 0;
}
void afficheTableau(int tableau[], int tailleTableau)
{
int i;
for(i = 0; i < tailleTableau; i++)
{
printf("%d \n", tableau[i]);
}
}
int sommeTableau(int tableau[], int tailleTableau)
{
int somme = 0;
somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
printf("\n%d \n\n", somme);
return somme;
}
double moyenneTableau(int tableau[], int tailleTableau)
{
double moyenne = 0;
int somme = 0;
somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
moyenne = somme / tailleTableau;
printf("%d \n\n", moyenne);
return moyenne;
}
g un proble dans le programme ci-desssous g cree une fonction ki calcule la moyenne des valeurs de mon tableau mais mon programme affiche une moyenne de zero alors kelle devrait etre de 7. J'aimerais que vous me disiez d'ou peut venir le probleme car je vois vraiment pas.
Programme :
#include <stdio.h>
#include <stdlib.h>
void afficheTableau(int tableau[], int tailleTableau);
int sommeTableau(int tableau[], int tailleTableau);
double moyenneTableau(int tableau[], int tailleTableau);
int main()
{
int tableau[4] = {3, 4, 10, 11};
afficheTableau(tableau, 4);
sommeTableau(tableau, 4);
moyenneTableau(tableau, 4);
return 0;
}
void afficheTableau(int tableau[], int tailleTableau)
{
int i;
for(i = 0; i < tailleTableau; i++)
{
printf("%d \n", tableau[i]);
}
}
int sommeTableau(int tableau[], int tailleTableau)
{
int somme = 0;
somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
printf("\n%d \n\n", somme);
return somme;
}
double moyenneTableau(int tableau[], int tailleTableau)
{
double moyenne = 0;
int somme = 0;
somme = tableau[0] + tableau[1] + tableau[2] + tableau[3];
moyenne = somme / tailleTableau;
printf("%d \n\n", moyenne);
return moyenne;
}
A voir également:
- Ma division ne marche pas
- Microsoft skype division - Télécharger - Téléphonie & Visio
- Excel division avec virgule - Forum Excel
- Division euclidienne ti 83 - Forum Logiciels
- Signe division clavier azerty ✓ - Forum Clavier
- Signe division clavier ✓ - Forum Clavier
2 réponses
Salut,
Dans cette
Bye
M
Dans cette
fonction double moyenneTableau(int tableau[], int tailleTableau)tas en sortie un double , moyen est de type double oui Mais Dans ton printf t'affiche la valeur decimal tu fait
printf("%d \n\n", moyenne);mais il faut faire
printf("%f \n\n", moyenne);
Bye
M
iyachi78
merci javais oublié ss vous jorai ptetre passer une heure à chercher
Bonjour,
En plus de ce que dit awesome33 : printf("%f...",moyenne) au lieu de "%d" pour afficher un double, il faut faire attention au niveau de la division :
moyenne=(double)somme/tailleTableau; sinon tu auras un arrondi (division entière).
Cdlt,
En plus de ce que dit awesome33 : printf("%f...",moyenne) au lieu de "%d" pour afficher un double, il faut faire attention au niveau de la division :
moyenne=(double)somme/tailleTableau; sinon tu auras un arrondi (division entière).
Cdlt,
justement tu te trompes mais c vrai ke je t'ai mal expliquer. La variable somme est un nombre entier car c'est une somme de nombre entier. C'est la variable moyenne qui doit être de type double car il y a de grande chance qu'une moyenne soit un nombre décimal mais je le repete dans mon cas c'est inutile parce que le resultat de ma moyenne est... 7 !
Mais merci quand même pour l'aide que tu as voulu me procurer.
Mais merci quand même pour l'aide que tu as voulu me procurer.
C'est toi qui te trompes...
C'est la variable moyenne qui doit être de type double
Oui, mais tu parlais de la variable "somme".
Mais même, si tu parles cette fois de la variable "moyenne", tu te trompes encore...
En effet, moyenne est de type double. Mais une division de nombres entiers (somme / tailleTableau) retourne un entier (partie entière). Ensuite, ce nombre sera casté en double avant d'être stocké dans "moyenne". Mais trop tard, tu perds l'arrondi. Dans ton cas, effectivement, ça ne se verra pas (28/4=7). Mais si tu fais un essai avec d'autres notes, ça se verra.
C'est la variable moyenne qui doit être de type double
Oui, mais tu parlais de la variable "somme".
Mais même, si tu parles cette fois de la variable "moyenne", tu te trompes encore...
En effet, moyenne est de type double. Mais une division de nombres entiers (somme / tailleTableau) retourne un entier (partie entière). Ensuite, ce nombre sera casté en double avant d'être stocké dans "moyenne". Mais trop tard, tu perds l'arrondi. Dans ton cas, effectivement, ça ne se verra pas (28/4=7). Mais si tu fais un essai avec d'autres notes, ça se verra.