Lit au clavier des entiers positifs et calcul leur moyenne

themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009 - 8 févr. 2008 à 17:34
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 févr. 2008 à 10:19
bonjour on vient de commencer la programmation c ...et j'ai petit souci avec mon code .J'arrive pas à calculer la moyenne !!! quand j'execute il m'affiche la moyenne est égal a zero ....
 
merci de m'aider
cordialement..........
voici mon code:

#include <stdio.h>
main()
{
//l'entier à saisir
int n;
//nombre d'ebtiers saisit
int nb_Entier = 0;
//la somme des entiers saisit
int somme = 0;
//la moyenne des entiers saisit
float moyenne ;
printf("Saisir un entier positif,negatif pour arreter :\n");
//Saisi de l'entier au clavier
scanf("%d",&n);
// tant que l'entier saisi est positif on rentre dans la boucle
while (n>0){
moyenne = 0;
somme = somme + n ;
nb_Entier ++;
scanf("%d",&n);//Saisi de l'entier au clavier
}
//nb_Entier--;
//affichage du nombre d'entiers saisi
printf("Le nombre d'entiers que vous avez saisi %d \n",nb_Entier);
//affichage de la somme des entiers saisi
printf("La somme des entiers saisi est de %d :\n",somme);
//calcul de la moyenne
moyenne = somme%nb_Entier;
//affichage de la moyenne
printf("La moyenne est %d \n!!!",moyenne);
}

the messenger

7 réponses

cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
8 févr. 2008 à 18:00
Bonjour

1) "somme % nb_Entier" donne le modulo et non la moyenne ! il faut "somme / nb_Entier".

2) "moyenne" étant un float, il faut "%f" dans le format de printf.

3) le calcul "somme / nb_Entier" étant fait sur des entiers, le résultat sera tronqué.

#include <stdio.h>
main()
{
   int   n;             // entier à saisir
   int   nb_Entier = 0; // nombre d'entiers saisi
   int   somme = 0;     // somme des entiers saisis
   float moyenne;       // moyenne des entiers saisis
   while (true)
   {
      // --- Saisir l'entier au clavier
      printf("Saisir un entier positif (negatif ou nul pour arreter) : ");
      scanf("%d",&n);
      if (n <= 0) break;
      somme += n;
      ++nb_Entier;
   }
   //--nb_Entier;



   // --- Afficher le nombre d'entiers saisis
   printf("\nNombre d'entiers saisis = %d\n",nb_Entier);
  
   // --- Afficher la somme des entiers saisis
   printf("Somme des entiers saisis = %d\n",somme);



   // --- Calculer et afficher la moyenne
   moyenne = (float)somme / (float)nb_Entier;
   printf("Moyenne = %.2f\n\n",moyenne);
}

Saisir un entier positif (negatif ou nul pour arreter) : 1
Saisir un entier positif (negatif ou nul pour arreter) : 2
Saisir un entier positif (negatif ou nul pour arreter) : 3
Saisir un entier positif (negatif ou nul pour arreter) : 4
Saisir un entier positif (negatif ou nul pour arreter) : 0



Nombre d'entiers saisis = 4
Somme des entiers saisis = 10
Moyenne = 2.50


Jean-François
0
themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009
8 févr. 2008 à 18:03
Merci Jean Francois .... ca marche et vive codes sources

the messenger
0
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 1
8 févr. 2008 à 18:09
Salut.

En effet.
Seulement :
1) int main(int argc,char** argv) est plus standard
2)je sais que ce programme n'est fait qu'a titre d'exemple et que j'ignore totalement son but au sein d'un eventuel programme plus complexe seuelement dans ce cas autant remplacer :
printf("Moyenne = %.2f\n\n",moyenne);
par :
printf("Moyenne = %.2f\n\n",(float)somme / (float)nb_Entier);

Ca fait une variable de moin .
(je chipote ?)

Si l'informatique été de l'alcool il y aurait des genies partout
0
themessenger Messages postés 45 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 5 janvier 2009
8 févr. 2008 à 18:20
merci ... a tous

the messenger
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
9 févr. 2008 à 00:10
"1) int main(int argc,char** argv) est plus standard"
Pas plus standard que la méthode précédente. Si on utilise pas la ligne de commande, on s'en fout.

"Ca fait une variable de moin .
(je chipote ?)"

Oui, tu chipotes ;)

C++ (@++)<!--
0
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 1
9 févr. 2008 à 09:10
La console c'est le bien
Sinn le tag "Réponse accepté"...

Si l'informatique été de l'alcool il y aurait des genies partout
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 févr. 2008 à 10:19
Pour être tout à fait clair, tu ne chipotes pas mais tu as simplement dit nimporte quoi.
C'est le compilo qui décide des variables qui existeront et de ce qui ne sera traité que dans les registres, le compilo et personne d'autre à moins d'écrire en ASM.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous