Lit au clavier des entiers positifs et calcul leur moyenne

Signaler
Messages postés
45
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
5 janvier 2009
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

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
Messages postés
45
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
5 janvier 2009

Merci Jean Francois .... ca marche et vive codes sources

the messenger
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
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
Messages postés
45
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
5 janvier 2009

merci ... a tous

the messenger
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
"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++ (@++)<!--
Messages postés
565
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
30 avril 2008
1
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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
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++