Partage
  • Partager sur Facebook
  • Partager sur Twitter

moyenne d'un tableau

    8 octobre 2021 à 19:11:17

    Bonjour,

    J'ai un exercice sur les tableaux où je dois écrire une fonction qui renvoit la moyenne des valeurs du tableau. D'après l'énoncé, je dois utiliser le prototype suivant: 

    double moyenneTableau(int tableau[], int tailleTableau);

    j'ai donc écrit ceci:

    #include <stdio.h>
    #include <stdlib.h>
    double moyenneTableau(int tableau[], int tailleTableau);
    
    int main()
    {
        int tableau[4] = {23, 42, 56, 77};
    
    
        printf("La moyenne des cases du tableau donne %lf\n", moyenneTableau(tableau, 4));
    
        return 0;
    }
    
    double moyenneTableau(int tableau[], int tailleTableau)
        {
              int i = 0, somme = 0;
    
    
    
            for(i=0; i < tailleTableau; i++)
            {
                somme = tableau[i] + somme;
            }
    
    
    
            return somme / tailleTableau;
    
    
        }

    Le problème c'est que la fonction renvoit 49.0000 au lieude 49.500000. Du coup, j'ai tout écrit en

    double et non pas en int:

    #include <stdio.h>
    #include <stdlib.h>
    double moyenneTableau(double tableau[], double tailleTableau);
    
    int main()
    {
        double tableau[4] = {23, 42, 56, 77};
    
    
        printf("La moyenne des cases du tableau donne %lf\n", moyenneTableau(tableau, 4));
    
        return 0;
    }
    
    double moyenneTableau(double tableau[], double tailleTableau)
        {
              int i = 0, somme = 0;
    
    
    
            for(i=0; i < tailleTableau; i++)
            {
                somme = tableau[i] + somme;
            }
    
    
    
            return somme / tailleTableau;
    
    
        }
    

    La fonction renvoit bien 49.50000 mais je n'ai pas utilisé le prototype de l'énoncé. Est-ce que qqn sait comment obtenir la moyenne de 49.5 en utilisant le prototype de l'énoncé ?

    Merci d'avance


    • Partager sur Facebook
    • Partager sur Twitter
      8 octobre 2021 à 19:18:51

      Erreur classique sur cet exercice. C'est que quand tu fait le calcul de la moyenne, tu divise un entier par un entier ce qui fait que le résultat est un entier et c'est seulement lorsque tu retourne la valeur qu'elle est converti en double.

      Pour que le résultat de la division soit un double, il faut que au moins une des opérande soit un double.

      Tu as la possibilité de faire un cast ou transtypage (ligne 28 de ton premier code) :

          return (double)somme / tailleTableau;



      • Partager sur Facebook
      • Partager sur Twitter
      ...
        8 octobre 2021 à 21:22:44

        Il me semble qu'un autre solution est de déclarer d'emblée 'somme' comme un 'double'.
        • Partager sur Facebook
        • Partager sur Twitter
          8 octobre 2021 à 22:19:28

          Ouiii vos deux solutions fonctionnent et je les ai essayées toutes deux.

          Ok donc je retiens que si je veux un résultat en double, il faut qu'au moins une de mes variables intervenantes soit un double. 

          Merci à vous

          • Partager sur Facebook
          • Partager sur Twitter

          moyenne d'un 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