Somme et moyenne en C

torn33 -  
goulamass Messages postés 1426 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

7 réponses

goulamass Messages postés 1426 Date d'inscription   Statut Membre Dernière intervention   177
 
Bonjour,

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

As-tu un exemple???

Je pense à un pb de type.
0
torn33
 
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
nkjhsdf
 
slt!
som=som+tot doit se trouver dans la boucle for!
bon courage!
0
goulamass Messages postés 1426 Date d'inscription   Statut Membre Dernière intervention   177
 
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   Statut Membre Dernière intervention   177
 
Met juste ta som dans la boucle
0
torn33
 
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
 
non!
dans ta boucle for ou tu saisi tes nombres, tu mets
som=som+tot
0
nkjhsdf > torn33
 
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   Statut Membre Dernière intervention   177
 
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
torn33
 
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   Statut Membre Dernière intervention   177
 
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
torn33
 
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   Statut Membre Dernière intervention   177
 
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