Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction moyenne_tableau

qui calcule et renvoie la moyenne des valeurs

    1 août 2019 à 18:06:04

    salut 
    pourquoi quand éxécuter ce programme il calculer la somme mais la moyenne ne calcule pas 
    ou il le probleme 
    #include <stdio.h>
    #include <stdlib.h>
    
    void affichage(int tableau[],int tailletableau);
    double moyenne(int tableau[],int tailletableau);
    
    int main()
    {
        int tableau[5]={1,2,3,4,5};
    
    
        affichage(tableau,5);
    
        moyenne(tableau,5);
        printf("la moyenne des valeurs de tableau %f",moyenne(tableau,5));
        return 0;
    
    }
    void affichage(int tableau[],int tailletableau)
    {
        int i;
        int somme=0;
    
        for(i=0;i<tailletableau;i++)
        {
    
            printf("%d\n",tableau[i]);
    
    
    
        }
        somme=somme+tableau[i];
    
      printf("le somme des valeurs est %d",somme);
    
    
        printf("\n");}
    
    
    double moyenne(int tableau[],int tailletableau)
    {
        int i;
    
         int somme;
        double moyenne;
    
    
        for(i=0;i<tailletableau;i++)
        {
    
          moyenne=moyenne+somme;
          moyenne=moyenne/tailletableau;
    
       }
        return  moyenne;
    
    }
    • Partager sur Facebook
    • Partager sur Twitter
      1 août 2019 à 18:26:06

      Bonjour ! L'algorithme est faux : la ligne 52 doit se situer après la boucle. De plus je crois que tu as oublié d'initialiser 'moyenne' (si on ne l'initialise pas, une variable peut valoir n'importe quoi, ici ça va fausser tous les calculs...)

      Pour trouver ce genre d'erreur, une méthode possible est de suivre pas à pas le programme :

      − tu réalises à la main un calcul de moyenne en notant les résultats intermédiaires ;

      − puis tu fais afficher ces résultats intermédiaires dans le programme et tu compares avec les calculs faits à la main.

      Ça permet de comprendre ce qui cloche.

      -
      Edité par robun 1 août 2019 à 18:28:18

      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2019 à 20:07:28

        Dans la fonction affichage le calcul de la somme n'est pas bonne (tu dois additionner toutes les valeurs du tableau, pas plus !) . D'ailleurs la fonction affichage ne devrait qu'afficher le tableau pas plus. Tu devrais avoir une fonction spécialisé pour calculer la somme.

        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2019 à 20:22:59

          Et pourquoi calculer 2 fois la moyenne ? (ligne 14 et ligne 15)
          • Partager sur Facebook
          • Partager sur Twitter

          En recherche d'emploi.

            2 août 2019 à 14:34:19

            Le fonction affichage n'est pas la pour faire une somme, son boulot est seulement d'afficher.

            La fonction moyenne n'a pas à faire une somme, il y a déjà une fonction somme qui s'en occupe. Exercice precedent. Il suffit de l'appeler.

            Ce n'est pas une bonne idée de donner le même nom à une fonction et à une de ses variables.

            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2019 à 15:41:00

              Bonjour
              Merci pour l'aide
              j'ai  corrigé les erreurs
              Cependant, lorsque le programme est exécuté, la somme est répété plusieurs fois.
              Quelle est la solution


              #include <stdio.h>
              #include <stdlib.h>
              double moyenne(int tableau[],int tailletableau);
              void affichage(int tab[],int tailletab);

              double somme(int table[],int tailletable);


              int main()
              {
                  int tableau[5]={1,2,3,4,5};
                  affichage(tableau,5);

                  moyenne(tableau,5);
                  printf("la moyenne est %f\n",moyenne(tableau,5));
                  return 0;

              }
              void affichage(int tab[],int tailletab)
              {
                  int i;
                  for(i=0;i<tailletab;i++)
                  {
                      printf("%d\n",tab[i]);

                  }
              }
              double somme(int table[],int tailletable)
              {
                  int i;
                  double somme=0;
                  for(i=0;i<tailletable;i++)
                  {
                     somme=somme+table[i];
                     }

                  printf("la somme est %f\n",somme);

                  return somme;}

              double moyenne(int tableau[],int tailletableau)
              {
                  int i;

                  double moyenne=0;

                  for(i=0;i<tailletableau;i++)
                  {

                    moyenne=somme(tableau,5);

                  }
                  moyenne=moyenne/tailletableau;



                  return moyenne;

              }
              • Partager sur Facebook
              • Partager sur Twitter
                14 août 2019 à 16:06:57

                Sdmu1914 a écrit:

                Cependant, lorsque le programme est exécuté, la somme est répété plusieurs fois.
                [...]
                    for(i=0;i<tailletableau;i++)
                    {
                      moyenne=somme(tableau,5);
                    }
                    moyenne=moyenne/tailletableau;

                . 

                Bonjour : La somme est répétée plusieurs fois parce que tu l'as mise dans une boucle ! (C'est la partie que j'ai laissée en citation.)

                J'ai l'impression que tu t'es embrouillé tout seul avec le calcul de la moyenne. Pourtant la formule est toute simple :

                Moyenne = Somme / N

                Il n'y a pas de boucle, juste une seule ligne ! J'espère que tu vois comment corriger ça ?

                -
                Edité par robun 14 août 2019 à 16:09:46

                • Partager sur Facebook
                • Partager sur Twitter
                  14 août 2019 à 16:30:03

                  > j'ai  corrigé les erreurs

                  > Cependant, lorsque le programme est exécuté, la somme est répété plusieurs fois.
                  • Si les erreurs étaient vraiment corrigées, ça marcherait.
                  • La somme est répétée plusieurs fois parce tu la fais répéter plusieurs fois.
                  • Ca se voit parce que ça s'affiche,et si ça affiche plusieurs fois c'est que

                  1. ta fonction somme est appelée plusieurs fois

                  2. elle fait un affichage, alors que son boulot c'est : calculer la somme. Calculer, c'est pas afficher.

                  3. Calculer la moyenne, c'est diviser la somme par le nombre d'éléments. La somme, c'est au singulier, il n'y en a qu'une à calculer, alors on la calcule une fois et c'est tout. Pas de boucle à faire dans somme.

                  Déjà dit il y a 2 semaines, mais c'est pas comme si tu étais obligé d'en tenir compte :-)

                  -
                  Edité par michelbillaud 14 août 2019 à 16:37:28

                  • Partager sur Facebook
                  • Partager sur Twitter

                  fonction moyenne_tableau

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown