Somme et moyenne en C

torn33 -  
goulamass Messages postés 1427 Statut Membre -
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

  1. goulamass Messages postés 1427 Statut Membre 177
     
    Bonjour,

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

    As-tu un exemple???

    Je pense à un pb de type.
    0
    1. 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
  2. nkjhsdf
     
    slt!
    som=som+tot doit se trouver dans la boucle for!
    bon courage!
    0
  3. goulamass Messages postés 1427 Statut Membre 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
  4. goulamass Messages postés 1427 Statut Membre 177
     
    Met juste ta som dans la boucle
    0
    1. 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
      1. nkjhsdf > torn33
         
        non!
        dans ta boucle for ou tu saisi tes nombres, tu mets
        som=som+tot
        0
      2. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. goulamass Messages postés 1427 Statut Membre 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
    1. torn33
       
      merci merci et je sort de lexercice si jamais je vouler en tirer le plus grand chiffre comment je devrais faire? merci
      0
  7. goulamass Messages postés 1427 Statut Membre 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
    1. torn33
       
      Pour le minimum j'ai tenté en vain d'inverser le signe > <. Pour le max ca marche mais pas pour le min
      0
  8. goulamass Messages postés 1427 Statut Membre 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