Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme sur Exos Tableau Partie II

fonction moyenneTableau

    2 janvier 2008 à 22:15:03

    bonjour a tous, j'ai un bleme , le compilateur m'affiche bien la somme, par contre il m'affiche la moyenne a 0 (que je initialisée).
    Il y a aucune erreur de syntaxe... je voulais juste savoir on peut appelé la fonction somme dans la fonction moyenne >>><code type="c">"moyenne = (sommeTableau(tableau, 3)) % tailleTableau;"

    voici mon code
    #include <stdio.h>
    #include <stdlib.h>

    long sommeTableau(long tableau[], long tailleTableau);
    double moyenneTableau(long tableau[], long tailleTableau);

    int main(int argc, char *argv[])
    {
    long tableau[3] = {5,8,6};

    //Somme Tableau
    printf("La somme du tableau est %d\n", sommeTableau(tableau, 3));

    //Moyenne Tableau
    printf("La moyenne du tableau est %d\n", moyenneTableau(tableau, 3));


    system("PAUSE");
    return 0;
    }

    long sommeTableau(long tableau[], long tailleTableau)
    {
    long somme = 0,i;
    for( i=0; i < tailleTableau; i++)
    {
    somme = somme + tableau[i];
    }

    return somme;
    }

    double moyenneTableau(long tableau[], long tailleTableau)
    {
    double moyenne = 0;

    moyenne = (sommeTableau(tableau, 3)) % tailleTableau;

    return moyenne;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      2 janvier 2008 à 22:18:12

      Mets ton code avec des balises s'il te plait! sinon c'est bien dur de lire et de t'aider!

      Sinon tu peux très bien appeler la fonction que tu veux dans la fonction que tu veux!
      • Partager sur Facebook
      • Partager sur Twitter
        2 janvier 2008 à 22:29:08

        1. #include <stdio.h>
        2. #include <stdlib.h>
        3. long sommeTableau(long tableau[], long tailleTableau);
        4. double moyenneTableau(long tableau[], long tailleTableau);
        5. void copie(long tableau[], long tableauCopie[], long tailleTableau);
        6. int main(int argc, char *argv[])
        7. {  
        8.     long tableau[3] = {5,8,6};
        9.     long i;
        10.     long tailleTableau=3;
        11.     long tableauCopie[3];
        12.     //Somme Tableau
        13.     printf("La somme du tableau est %d\n", sommeTableau(tableau, 3));
        14.     //Moyenne Tableau
        15.     printf("La moyenne du tableau est %d\n", moyenneTableau(tableau, 3));
        16.  /*   //Copie Tableau
        17.     for( i=0; i < tailleTableau; i++){
        18.     printf("le tableau copié est %d ",copie(tableau[i],tableauCopie[i],3));}   */
        19.     system("PAUSE");  
        20.     return 0;
        21. }
        22. long sommeTableau(long tableau[], long tailleTableau)
        23. {
        24.      long somme = 0,i;
        25.      for( i=0; i < tailleTableau; i++)
        26.      {
        27.           somme = somme + tableau[i];
        28.      }
        29.      return somme;
        30. }
        31. double moyenneTableau(long tableau[], long tailleTableau)
        32. {
        33.        double moyenne = 0;
        34.        moyenne = (sommeTableau(tableau, 3)) % tailleTableau;
        35.        return moyenne;
        36. }
        37.  /*  
        38. void copie(long tableau[], long tableauCopie[], long tailleTableau)
        39. {
        40.      for(i=0; i<tailleTableau;i++)
        41.      {
        42.               tableau[i] = tableauCopie[];
        43.      }
        44. }*/
        </ul>
        • Partager sur Facebook
        • Partager sur Twitter
          2 janvier 2008 à 22:37:20

          Déjà, t'es censé mettre tes fonctions dans un fichier à part, fonctions.c. Mais bon, passons, c'est du détail ça.
          Ta fonction moyenne ne marche pas parce que tu utilises un...modulo! Je sais pas où t'es allé le chercher, mais il n'a rien à faire là. Relis le cours sur les variables si tu n'as pas compris comment ça marche mais en gros tu récupères le RESTE de (somme / tailleTableau), c'est-à-dire...1. Bon déjà s'il t'affiche 0 y'a un problème, mais j'arrive pas à le voir.

          Passons mainteant à ta fonction de copie, qui souffre de plusieurs défauts :
          -D'abord le code dans le main : tu ne PEUX PAS afficher le contenu d'un tableau dans un printf comme tu le fais. Il faut utiliser une boucle for pour lire le tableau ou, plus simplement, utiliser une fonction "affiche", comme par exemple celle que donne M@teo... :-°
          -Ensuite, il manque le 'i' dans ton opération et surtout...ce que tu fais, si tu regardes l'ordre dans lequel tu mets tes variables, c'est que tu mets le contenu de "tableauCopie[i]" DANS "tableau[i]"...or tu veux faire l'inverse, non? :)



          Voilà. :)
          • Partager sur Facebook
          • Partager sur Twitter
            2 janvier 2008 à 22:43:59

            lol ok pour linversion mais pour le modulo, en fait j'avais mit / en premiere et j'ai pensais m'etre tromper (je pensais que / était modulo et que c'était ca l'érreur ...)
            • Partager sur Facebook
            • Partager sur Twitter
              2 janvier 2008 à 23:16:51

              1. long sommeTableau(long tableau[], long tailleTableau)
              2. {
              3.      long somme = 0,i;
              4.      for( i=0; i < tailleTableau; i++)
              5.      {
              6.           somme = somme + tableau[i];
              7.      }
              8.      return somme;
              9. }
              10. double moyenneTableau(long tableau[], long tailleTableau)
              11. {
              12.        double moyenne = 0;
              13.        moyenne = (sommeTableau(tableau, 3)) % tailleTableau;
              14.        return moyenne;
              15. }


              Ta variable moyenne est de type double or tu lui affectes une fonction qui renvoie un long :s.Ce qui te donnera une conversion implicite de type.De manière générale,il faut faire attention au type de variable qu'on utilise parce qu'ici ça passe mais l'inverse n'aurait pas fonctionné.
              • Partager sur Facebook
              • Partager sur Twitter
                2 janvier 2008 à 23:34:03

                Après Quelques modif., j'en suis arrivé a ça :
                1. #include <stdio.h>
                2. #include <stdlib.h>
                3. double sommeTableau(long tableau[], long tailleTableau);
                4. double moyenneTableau(long tableau[], long tailleTableau);
                5. int main(int argc, char *argv[])
                6. {
                7.     long tableau[3] = {5,8,6};
                8. //Somme Tableau
                9.     printf("La somme du tableau est %f\n", sommeTableau(tableau, 3));
                10. //Moyenne Tableau
                11.     printf("La moyenne du tableau est %f\n", moyenneTableau(tableau, 3));
                12.     getchar();
                13.     return 0;
                14. }
                15. double sommeTableau(long tableau[], long tailleTableau)
                16. {
                17.     double somme = 0;
                18.     int i;
                19.     for( i=0; i < tailleTableau; i++)
                20.     {
                21.         somme = somme + tableau[i];
                22.     }
                23.     return somme;
                24. }
                25. double moyenneTableau(long tableau[], long tailleTableau)
                26. {
                27.     double somme = sommeTableau(tableau, 3);
                28.     double moyenne = somme / tailleTableau; //Il faut faire une division, pas un modulo !
                29.     return moyenne;
                30. }

                En esperant avoir pu t'aider :)
                • Partager sur Facebook
                • Partager sur Twitter

                Probleme sur Exos Tableau Partie II

                × 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