Somme et moyenne en C

Fermé
torn33 - 22 mai 2008 à 09:38
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 - 22 mai 2008 à 10:30
Bonjour,
voila j'ai un exercice a faire en C.. Le but est de demander à l'utilisateur de rentrer le nombre d'entier à saisir puis il doit rentrer les chiffres un par un. Enfin le programme fait la somme et la moyenne des chiffres saisie. Dans la forme mon programme marche mais en test on se rend compte que la somme se fait mal et donc la moyenne par la meme occasion. voila le code merci de me le réparé et de m'expliquer la faute:

#include <stdio.h> 
#include <stdlib.h>
#include <math.h>

main()
{
      int i,nb,tot; 
      float som,moy; 
      som=0; 
      moy=0; 
      i=0;
      nb=0;
      tot=0;
      
      printf("entrer le nombre de chiffre a additionner :");
     scanf("%d", &nb);
     
puts ("\n\n\n");  
 
      for(i=0;i<nb;i++) 
      {
                       printf("entrer la valeur de la cellule %i du tableau : ",i+1); 
                       scanf("%i", &tot); 
                       } 
puts ("\n\n\n"); 
      
                som = som + tot; 
          
          printf("la somme est egale a : %g",som); 

puts ("\n\n\n"); 
                
      moy = moy + (som/nb); 
printf("la moyenne est egale a : %g",moy); 
          
      puts ("\n\n\n");           

system("pause");
return 0;
} 


merci

7 réponses

goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 09:40
Bonjour,

Quand tu dis la somme se fiat mal c-a-d???

As-tu un exemple???

Je pense à un pb de type.
0
en fait voila ce que voit l'utilisateur


entrer le nombre de chiffre a additionner : il saisi "3"

entrer la valeur de la cellule 1 du tableau : il saisi "4"
entrer la valeur de la cellule 2 du tableau : il saisi "2"
entrer la valeur de la cellule 3 du tableau : il saisi "3"


la somme est égale a : 4 (alors quelle devrait être égale à 9)

la moyenne est égale à 1.3 (elle devrait être de 3 mais comme la somme ce fait mal, la moyenne suit 4/3 = 1.3


voila
0
slt!
som=som+tot doit se trouver dans la boucle for!
bon courage!
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 09:49
Effectivement je n'avais pas fait attention à ça.

Mets ta somme dans la boucle.

Et pour moy je pense que moy = som / nb suffit.
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 09:53
Met juste ta som dans la boucle
0
ok ok donc sa devrait donner ca?

#include <stdio.h> 
#include <stdlib.h>
#include <math.h>

main()
{
      int i,nb,tot; 
      float som,moy; 
      som=0; 
      moy=0; 
      i=0;
      nb=0;
      tot=0;
      
      printf("entrer le nombre de chiffre a additionner :");
     scanf("%d", &nb);
     
puts ("\n\n\n");  
 
      for(i=0;i<nb;i++) 
      {
                       printf("entrer la valeur de la cellule %i du tableau : ",i+1); 
                       scanf("%i", &tot); 
                       } 
puts ("\n\n\n"); 
      
      for(i=0;i<nb;i++)
      {
                som = som + tot; 
                }
                          
          printf("la somme est egale a : %g",som); 

puts ("\n\n\n"); 
                
      moy = som/nb; 
printf("la moyenne est egale a : %g",moy); 
          
      puts ("\n\n\n");           

system("pause");
return 0;
} 
0
nkjhsdf > torn33
22 mai 2008 à 09:59
non!
dans ta boucle for ou tu saisi tes nombres, tu mets
som=som+tot
0
nkjhsdf > torn33
22 mai 2008 à 10:00
ca doit donner ca :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
int i,nb,tot;
float som,moy;
som=0;
moy=0;
i=0;
nb=0;
tot=0;

printf("entrer le nombre de chiffre a additionner :");
scanf("%d", &nb);

puts ("\n\n\n");

for(i=0;i<nb;i++)
{
printf("entrer la valeur de la cellule %i du tableau : ",i+1);
scanf("%i", &tot);
som=som+tot;
}
puts ("\n\n\n");


printf("la somme est egale a : %g",som);

puts ("\n\n\n");

moy = som/nb;
printf("la moyenne est egale a : %g",moy);

puts ("\n\n\n");

system("pause");
return 0;
}
0

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

Posez votre question
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 10:00
Heu là tu fais deux boucles un peu pour rien.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
int i,nb,tot;
float som,moy;
som=0;
moy=0;
i=0;
nb=0;
tot=0;

printf("entrer le nombre de chiffre a additionner :");
scanf("%d", &nb);

puts ("\n\n\n");

for(i=0;i<nb;i++)
{
printf("entrer la valeur de la cellule %i du tableau : \n",i+1);
scanf("%i", &tot);
som = som + tot;
}

puts ("\n\n\n");

printf("la somme est egale a : %g",som);

puts ("\n\n\n");

moy = som/nb;
printf("la moyenne est egale a : %g",moy);

system("pause");
return 0;
}
0
merci merci et je sort de lexercice si jamais je vouler en tirer le plus grand chiffre comment je devrais faire? merci
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 10:05
Ben c'est très simple.

Tu rajoute une variable max.

int max = 0;

Et dans ta boucle avant la somme tu fais.

if(max < tot)
max = tot;

Pas plus compliqué ;)
0
Pour le minimum j'ai tenté en vain d'inverser le signe > <. Pour le max ca marche mais pas pour le min
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 10:30
Bizarre ça devrait marcher pourtant.

Ah non je sais pk ça doit déconner.

C'est parce que tu met min à 0 je suppose donc il garde toujours 0 en mémoire.

Donc tu fais deux tests dans ce cas

if (min == 0)
min = tot;
if(min > tot)
min = tot;
0