Partage
  • Partager sur Facebook
  • Partager sur Twitter

exercice tableau

probleme moyenne

Sujet résolu
    27 novembre 2008 à 22:18:52

    Bonjour!
    J'ai un problème avec la moyenne du tableau:
    elle affiche -2147483648
    #include <stdio.h>
    #include <stdlib.h>
    
    
    
    
    int main(int argc, char *argv[])
    {
    	long tableau[5] = {1,2,4,5,0};
    	double moyenne = 0;
    	long somme = 0;
    		somme = sommeTableau(tableau,5);
    	printf("la somme du tableau est: %ld\n",somme);
    	moyenne = moyenneTableau(sommeTableau,tableau,5);
    	printf("la moyenne du tableau est: %ld \n",moyenne);
    
    	system("PAUSE");
    	return 0;
    }
    
    long sommeTableau (long tableau[], long taille)
    {
    	long i = 0, sommeTableau = 0;
    	for (i =0; i < taille; i++)
    	{
    		sommeTableau = sommeTableau + tableau[i];
    	}
    	return sommeTableau;
    }
    
    long moyenneTableau (long sommeTableau,long tableau[], long taille)
    {
    	long moyenneTableau = 0;
    	moyenneTableau = sommeTableau / taille;
    	return moyenneTableau;
    }
    


    Je suis ultranoob et je sais que j'ai des problemes avec mes types de variables.
    Merci pour votre aide.
    PS; la fonction sommeTableau fonctionne correctement, elle affiche bien 12.
    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2008 à 22:22:38

      Pourquoi faire passer tableau[] à ta fonction moyenne ? tu ne t'en sers même pas ...
      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2008 à 22:25:36

        Parce que quand je l'enlève la moyenne affiche 0!
        en fait je pense que j'en ai besoin pour donner taille du tableau a la fonction.
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2008 à 22:27:51

          moyennetableau renvoie un long et toi tu le stockes dans un ...
          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2008 à 22:29:41

            j'ai modifié double j'ai mis long et la valeur de la moyenne affiche: 28979757 maintenant...
            • Partager sur Facebook
            • Partager sur Twitter
              27 novembre 2008 à 22:34:35

              Mais euh déjà il y a des problémes dans ton code non ?

              1) tu passes des doubles pour une moyenne qui sera minuscule : un int suffit , ou un long pour être à la mode des tutos de mateo ;)

              2) y'a pas les prototypes de tes fonctions là non plus

              3) tu donnes sommetableau au lieu de donner somme à moyenne tableau .

              Code corrigé : 
              
              #include <stdio.h>
              #include <stdlib.h>
              
              long sommeTableau (long *tableau, long taille)
              {
              	long i = 0, sommeTableau = 0;
              	for (i =0; i < taille; i++)
              	{
              		sommeTableau = sommeTableau + *(tableau+i);
              	}
              	return sommeTableau;
              }
              
              long moyenneTableau (long sommeTableau,long taille)
              {
              	long moyenneTableau = 0;
              	moyenneTableau = sommeTableau / taille;
              	return moyenneTableau;
              }
              
              
              
              int main(int argc, char *argv[])
              {
              	long tableau[5] = {1,2,4,5,0};
              	long moyenne = 0;
              	long somme = 0;
              		somme = sommeTableau(tableau,5);
              	printf("la somme du tableau est: %ld\n",somme);
              	moyenne = moyenneTableau(somme,5);
              	printf("la moyenne du tableau est: %ld \n",moyenne);
              
              	system("PAUSE");
              	return 0;
              }
              


              Alors j'ai :
              -remplacé le double par un long
              -donné un pointeur à la fonction sommetableau au lieu de lui donner un tableau (sinon il aurait fallu que tu mettes tes prototypes avant)
              -remplacé le sommetableau que tu donnais à la fonctionne moyennetableau par somme .
              Je crois que c'est tout :)

              Ah oui au fait , évite le system("Pause") à la fin , c'est pas super propre ... essaie de changer d'ide ou de passer sous linux :) (j' vais me faire engueuler là ... ^^)
              • Partager sur Facebook
              • Partager sur Twitter
                27 novembre 2008 à 23:31:43

                MERCIIIII!!!
                je ne pensais pas que les prototypes étaient importants là dedans!
                Tu peux m'expliquer pourquoi pointer la fonction sommeTableau dans ce cas et pas dans l'autre et donc le rôle des prototypes (je pensais qu'ils ne servaient que quand les fonctions étaient en appartées du programme principale?
                (je sais que dans le 2ème cas le programme ne fonctionne pas et j'aurais pu chercher longtemps....je n'aurais pas trouvé).

                re-MERCI!

                • Partager sur Facebook
                • Partager sur Twitter
                  28 novembre 2008 à 2:15:18

                  En fait, il faut qu'il y ai un prototype ou la déclaration de ta fonction avant qu'elle soit utilisée par une autre fonction.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 novembre 2008 à 8:50:33

                    Citation : Floooder

                    il faut qu'il y ai un prototype ou la déclaration de ta fonction [...]


                    Petite précision : déclaration de fonction et prototype c'est la même chose.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    exercice 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