Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec moyenne des tableux

    21 décembre 2006 à 15:32:34

    Bonjour a tous?

    J'ai essayer de recoder un truc mais sa ne marche toujours pas?

    Voici mon code:
    #include <stdio?h>
    #include <stdlib?h>
    #include "learn??"


    int main(int argc, char *argv[])
    {
     
      long tailleTableau = 0, i, somme = 0;
      double moyenne;
      long tableau[tailleTableau];
     
      printf ("Rentrez la taille du tableau: ");
      scanf ("%ld", &tailleTableau);
     
      printf ("Vous avez %ld cellule a remplir \n\n", tailleTableau);
     
      for (i = 0; i < tailleTableau; i++)
      {
          printf ("Cellule numero %ld : ", i);
          scanf ("%ld", &tableau[i]);
      }
     
      // ON appelle la fonction et on écrit la somme des cellules du tableau
      somme = sommeTableau(tableau, tailleTableau);
      printf ("La somme des cellules est de %ld !! \n\n", somme);
     
      //On appelle la fonction et on écrit la moyenne des cellules du tableau
      moyenne = moyenneTableau(tableau, tailleTableau);
      printf ("La moyenne des cellules est de %lf \n\n", moyenne);
      system ("PAUSE");     
      return 0;
    }


    // Fonction pour aditionner les cellules du tableau
    long sommeTableau(long tableau[], long tailleTableau)
    {         
       // Déclaration des variables
       long i = 0, somme = 0;
       
       //La boucle pour parcourir le programme et additioner les valeurs
       for (i = 0; i < tailleTableau; i++)
       {
         somme = somme + tableau[i];
       }
       
       return somme; 
    }


    // Fonction pour la moyenne des cellules du tableau
    double moyenneTableau(double tableau[], double tailleTableau)
    {
      // Déclaration des variables
      double i = 0, moyenne = 0, somme = 0;
     
      // La boucle pour parcourir le programme, additioner les valeurs et les diviser
      for (i = 0; i < tailleTableau; i++)
      {
        somme = somme + tableau[i];
        moyenne = somme / tailleTableau;
      }
     
      return moyenne;
    }



    Et les erreurs retourner:

    Citation : Erreur


    29 [Warning] passing arg 1 of `moyenneTableau' from incompatible pointer type
    In function `moyenneTableau':
    61 array subscript is not an integer
    61 array subscript is not an integer



    Merci d'avance pour votre aide car je sèche???


    Sword'
    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2006 à 15:34:57

      Bah c'est simple, tu reprend ta fonction Sommation ( qui fait une somme ) et tu divise le résultat final par le nombre de valeurs que tu as dans ton tableau. :-°
      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2006 à 16:36:11

        #include <stdio.h>
        #include <stdlib.h>
        #include "tableau2.h"

        // Fonction main
        int main(int argc‚ char *argv[])
        {       
                 
            long tableau[4] = {5201510};
            double moyenne = 0;
           
            moyenne = moyenneTableau(tableau‚ 4);
            printf ("La moyenne des nombres du tableau est: %ld"‚ moyenne);
            system("PAUSE");
            return 0;
        }


        double moyenneTableau(long tableau[]long tailleTableau)
        {
           double i‚ moyenne = 0‚ somme = 0;
           
           for (i = 0; i < tailleTableau; i++)
           {
             somme = somme + tableau[i];
             moyenne = somme / 4
           }
           
           return moyenne;
        }


        Heu... j'ai réalisé ce code mais il ne marche toujours pas :s

        Citation : Erreur


        In function `moyenneTableau':
        25: array subscript is not an integer
        27: syntax error before '}' token
        [Build Error] [tableau2.o] Error 1

        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2006 à 12:01:51

          J'ai essayer de recoder un truc mais sa ne marche toujours pas?

          Voici mon code:
          #include <stdio?h>
          #include <stdlib?h>
          #include "learn?h"


          int main(int argc, char *argv[])
          {
           
            long tailleTableau = 0, i, somme = 0;
            double moyenne;
            long tableau[tailleTableau];
           
            printf ("Rentrez la taille du tableau: ");
            scanf ("%ld", &tailleTableau);
           
            printf ("Vous avez %ld cellule a remplir \n\n", tailleTableau);
           
            for (i = 0; i < tailleTableau; i++)
            {
                printf ("Cellule numero %ld : ", i);
                scanf ("%ld", &tableau[i]);
            }
           
            // ON appelle la fonction et on écrit la somme des cellules du tableau
            somme = sommeTableau(tableau, tailleTableau);
            printf ("La somme des cellules est de %ld !! \n\n", somme);
           
            //On appelle la fonction et on écrit la moyenne des cellules du tableau
            moyenne = moyenneTableau(tableau, tailleTableau);
            printf ("La moyenne des cellules est de %lf \n\n", moyenne);
            system ("PAUSE");     
            return 0;
          }


          // Fonction pour aditionner les cellules du tableau
          long sommeTableau(long tableau[], long tailleTableau)
          {         
             // Déclaration des variables
             long i = 0, somme = 0;
             
             //La boucle pour parcourir le programme et additioner les valeurs
             for (i = 0; i < tailleTableau; i++)
             {
               somme = somme + tableau[i];
             }
             
             return somme; 
          }


          // Fonction pour la moyenne des cellules du tableau
          double moyenneTableau(double tableau[], double tailleTableau)
          {
            // Déclaration des variables
            double i = 0, moyenne = 0, somme = 0;
           
            // La boucle pour parcourir le programme, additioner les valeurs et les diviser
            for (i = 0; i < tailleTableau; i++)
            {
              somme = somme + tableau[i];
              moyenne = somme / tailleTableau;
            }
           
            return moyenne;
          }



          Et les erreurs retourner:

          Citation : Erreur


          29 [Warning] passing arg 1 of `moyenneTableau' from incompatible pointer type
          In function `moyenneTableau':
          61 array subscript is not an integer
          61 array subscript is not an integer



          Merci d'avance pour votre aide car je sèche???
          • Partager sur Facebook
          • Partager sur Twitter
            22 décembre 2006 à 13:02:23

            Voilà le code corrigé :

            #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 tailleTableau = 0, i = 0, somme = 0;
              double moyenne = 0;
              long tableau[tailleTableau];
             
              printf ("Rentrez la taille du tableau: ");
              scanf ("%ld", &tailleTableau);
             
              printf ("Vous avez %ld cellule(s) a remplir \n\n", tailleTableau);
             
              for (i = 1; i <= tailleTableau; i++)
              {
                  printf ("Cellule numero %ld : ", i);
                  scanf ("%ld", &tableau[i]);
              }
             
              // ON appelle la fonction et on écrit la somme des cellules du tableau
              somme = sommeTableau(tableau, tailleTableau);
              printf ("\n\nLa somme des cellules est de %ld !! \n\n", somme);
             
              //On appelle la fonction et on écrit la moyenne des cellules du tableau
              moyenne = moyenneTableau(tableau, tailleTableau);
              printf ("La moyenne des cellules est de %lf \n\n", moyenne);
             
              system ("PAUSE");     
              return 0;
            }


            // Fonction pour aditionner les cellules du tableau
            long sommeTableau(long tableau[], long tailleTableau)
            {         
               // Déclaration des variables
               long i = 0, somme = 0;
               
               //La boucle pour parcourir le programme et additioner les valeurs
               for (i = 1; i <= tailleTableau; i++)
               {
                 somme += tableau[i];
               }
               
               return somme;
            }


            // Fonction pour la moyenne des cellules du tableau
            double moyenneTableau(long tableau[], long tailleTableau)
            {
              // Déclaration des variables
              long i = 0, somme = 0;
              double moyenne = 0;
             
              // La boucle pour parcourir le programme, additioner les valeurs et les diviser
              for (i = 1; i <= tailleTableau; i++)
              {
                somme += tableau[i];
                moyenne = somme / tailleTableau;
              }
             
              return moyenne;
            }


            --> J'ai raccourci qq petits trucs comme pour :

            somme = somme + tableau[i]
            /* Racourci */
            somme += tableau[i]


            --> Dans les parameètres des fonctions, pourquoi tu mets des doubles pour tailleTableau et tableau[] ? Les nombres sont entiers donc c'est du long (ou int).

            --> Pareil pour les variables, tu mets des double pour i, somme ... C'est du long !

            --> J'ai mis :

            for (i = 1; i <= tailleTableau; i++)


            et non :

            for (i = 0; i < tailleTableau; i++)


            Tout simplement pour afficher dans la console :

            Cellule numero 1 : ..
            Cellule numero 2 : ..


            Et non commencer par

            Cellule numero 0 : ..


            Petit détail personnel ^^

            --> J'ai rajouté les prototype pour moi pour tester, mais tu peux les enlever

            Voila, chez moi tout marche en tout cas :)
            • Partager sur Facebook
            • Partager sur Twitter
              22 décembre 2006 à 15:35:20

              Merci beaucoup mais en faites je suis entouré d'une équipe de dévelopeurs et j'ai expliqué mon problème a un de cela.

              On a vu un petit emmelement dans les types de variables et j'ai aussi corriger le truc de cellule 0 mais je m'en fiche un peu vu que c'est un entrainement et que je sais que les tableaux commencent par l'indice 0 :)
              • Partager sur Facebook
              • Partager sur Twitter
                23 décembre 2006 à 20:43:26

                Bon voila celle que j'avais écrite, elle est plus simple mais j'utilise la première case du tableau pour faire la variable, pour l'exemple c'est bon parce qu'on ne se sert plus du tableau après mais si on ne veux pas toucher aux variables elle ne convient pas. :)

                double moyenneTableau(long tableau[], long tailleTableau)
                {
                 long i;
                 for(i=1;i<tailleTableau;i++)
                 {
                        tableau[0] += tableau[i];
                 }
                 tableau[0] /= tailleTableau;
                 return tableau[0];
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  23 décembre 2006 à 20:50:40

                  Citation : Mercenary


                  --> J'ai mis :

                  for (i = 1; i <= tailleTableau; i++)



                  et non :

                  for (i = 0; i < tailleTableau; i++)



                  Tout simplement pour afficher dans la console :

                  Cellule numero 1 : ..
                  Cellule numero 2 : ..



                  Et non commencer par

                  Cellule numero 0 : ..



                  Petit détail personnel ^^



                  Ahhh, noon!!

                  Si tu fais i<=tailleTableau, ça ne va pas, souviens-toi que les tableaux commencent à 0!
                  La "case maximale" d'un talbeau est : tab[taille_tab - 1] et non tab[taille_tab].

                  Donc pour afficher ton chiffre à partir de 1, rajoutes simplement +1 au printf.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 décembre 2006 à 21:08:21

                    Citation : Sword

                    Voici mon code:

                    #include <stdio?h>
                    #include <stdlib?h>
                    #include "learn??"



                    o_O C'est quoi ça ? Tu as lu dans dans quel cours ? Ou, comme dirait un de nos collègues, "tu prends de la drogue ?" ...

                    Tu as fait le choix de placer la fonction appelée après l'appel de la fonction. Ce choix est discutable, mais il faut l'assumer, à savoir que dans ce cas, il faut fournir un prototype séparé au compilateur avant l'appel de la fonction, c'est à dire au début du code source.

                    long sommeTableau(long tableau[], long tailleTableau)

                    int main (...


                      double i = 0, moyenne = 0, somme = 0;

                      for (i = 0; i < tailleTableau; i++)
                      {
                        somme = somme + tableau[i];
                        moyenne = somme / tailleTableau;
                      }

                    Un indice doit être de type entier. double n'est pas un type 'entier'.

                    Le calcul de la moyenne (division) doit être fait après la sommation des éléments (question de mathématiques élémentaire, pas de C...)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      23 décembre 2006 à 21:10:46

                      Je crois qu'il mélange la touche ',' et ';' :-°

                      Celà dit, include learn.. ne voudrait pas dire grand chose quand même :D
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Problème avec moyenne des tableux

                      × 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