Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Fonctions de tableaux, problème..

Exercice 3 des tableaux: copier un tableau

Sujet résolu
    26 février 2006 à 0:14:52

    Bonjour à tous et merci d'avance, voila j'ai un problème avec mon code, je vous le montre:


    Fichier main.c:
    #include <stdio.h>
    #include <stdlib.h>
    #include "tablo.h"


    int main()
    {
        //les 2 tableaux..
        long tableau[4] = {300, 200, 100, 700}, tableaucopier[4] = {0}, i = 0, somme = 0, moyenne = 0;

            //utilisation des fonctions
            sommetablo(tableau, 4);
            moyennetablo(tableau, 4);
        copitablo(tableau, 4);


        printf("la somme des valeurs de ce tableau vaut %ld\n", sommetablo(tableau, 4));
        printf("sa moyenne est de %ld\n", moyennetablo(tableau,4));
        printf("voici le tableau copier\n");
        // je n'ai pas mis la boucle pour dire que le copiage de tableau a bien marché car j'ai un problème
        // avant
        return 0;
    }




    Pas de problème


    Fichier tablo.c:
    #include "tablo.h"


    //fonction qui calcule la somme du tableaux..
    long sommetablo(long tableau[], long tailleTableau)
            {
                long somme = 0, i;
                for(i = 0; i < tailleTableau; i++)
                    {
                       somme+= tableau[i];
                    }
                return somme;
            }




    //fonction qui calcule la moyenne d'un tableau
    long moyennetablo(long tableau[], long tailleTableau)
            {
                long moyenne = 0, i;
                for (i = 0; i < tailleTableau; i++)
                    {
                        moyenne+=tableau[i] / 4;
                    }
                return moyenne;
            }



    //fonction qui devrait copier un tableau mais qui ne marche pas...
    long copitablo(long tableau[], long tailleTableau)
            {
                long i;
                for(i= 0; i < tailleTableau; i++)
                    {
                        tableaucopier[i] = tableau[i];
                    }

            }






    Voici le message d'erreur:
    tablo.c:32: error: `tableaucopier' undeclared (first use in this function)
    tablo.c:32: error: (Each undeclared identifier is reported only once
    tablo.c:32: error: for each function it appears in.)
    En clair sa veut dire que la fonction tableaucopier n'est pas déclaré or dans ce topic( http://www.siteduzero.com/forum-83-20887-tableau---exercice-3.html ), j'ai copié à ma facon et sa ne marche pas...



    Fichier tablo.h:
    //calcule une somme d'un tableau
    long sommetablo(long tableau[], long tailleTableau);

    //calcule une moyenne d'un tableau
    long moyennetablo(long tableau[], long tailleTableau);

    //copie un tableau dans un autre tableau
    long copitablo(long tableau[], long tailleTableau);





    Aucun problème ici




    • Partager sur Facebook
    • Partager sur Twitter
      26 février 2006 à 0:22:55

      Salut, bah c'est simple tu n'a pas déclarer tableaucopier dans ta fonction copietableau.

      long copitablo(long tableau[], long tailleTableau)
              {
                  char tableaucopier[tailleTableau]; //on déclare la chaine tableaucopier
                  long i;
                  for(i= 0; i < tailleTableau; i++)
                      {
                          tableaucopier[i] = tableau[i];
                      }

              }


      Sinon tu peut toujours rajouter un argument a ta fonction et envoyer ton tableaux a la fonction.
      • Partager sur Facebook
      • Partager sur Twitter
        26 février 2006 à 0:37:29

        Sa ne marche pas :( je te montre le code source:
        Fichier main.c:
        #include <stdio.h>
        #include <stdlib.h>
        #include "tablo.h"


        int main()
        {
            //les 2 tableaux..
            long tableau[4] = {300, 200, 100, 700}, tableaucopier[4] = {0}, i = 0, somme = 0, moyenne = 0;

                //utilisation des fonctions
                sommetablo(tableau, 4);
                moyennetablo(tableau, 4);
            copitablo(tableau, 4);


            printf("la somme des valeurs de ce tableau vaut %ld\n", sommetablo(tableau, 4));
            printf("sa moyenne est de %ld\n", moyennetablo(tableau,4));
            printf("voici le tableau copier\n");
            // je n'ai pas mis la boucle pour dire que le copiage de tableau a bien marché car j'ai un problème
            // avant
            for (i=0; i < 4; i++)
                {
                    printf("tableau: %ld ||| tableaucopier: %ld\n", tableau[i], copitablo(tableau, 4));
                }
            return 0;
        }










        Fichier tablo.c:
        #include "tablo.h"


        //fonction qui calcule la somme du tableaux..
        long sommetablo(long tableau[], long tailleTableau)
                {
                    long somme = 0, i;
                    for(i = 0; i < tailleTableau; i++)
                        {
                           somme+= tableau[i];
                        }
                    return somme;
                }




        //fonction qui calcule la moyenne d'un tableau
        long moyennetablo(long tableau[], long tailleTableau)
                {
                    long moyenne = 0, i;
                    for (i = 0; i < tailleTableau; i++)
                        {
                            moyenne+=tableau[i] / 4;
                        }
                    return moyenne;
                }



        //fonction qui devrait copier un tableau mais qui ne marche pas...
        long copitablo(long tableau[], long tailleTableau)
                {
                    long i;
                    long tableaucopier[4] = {0}, z = 0;
                    for(i= 0; i < tailleTableau; i++)
                        {
                            tableaucopier[z] = tableau[i];
                        }
                return tableaucopier[i];
                }









        Fichier tablo.h:
        //calcule une somme d'un tableau
        long sommetablo(long tableau[], long tailleTableau);

        //calcule une moyenne d'un tableau
        long moyennetablo(long tableau[], long tailleTableau);

        //copie un tableau dans un autre tableau
        long copitablo(long tableau[], long tailleTableau);






        Il n'y a plus de message d'erreur mais quand je lance le programme sa n'a pas copié, sa a juste mis des valeurs comme(exemple) 18753486 partout...

        Edit: merci quand même
        • Partager sur Facebook
        • Partager sur Twitter
          26 février 2006 à 0:51:57

          Bah c'est que tu ne peut pas renvoyer un tableaux essaie plustot avec un pointeur.
          main.c

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

          int main()
          {
              //les 2 tableaux..
              long tableau[4] = {300, 200, 100, 700}, tableaucopier[4] = {0}, i = 0, somme = 0, moyenne = 0;

                  //utilisation des fonctions
                  sommetablo(tableau, 4);
                  moyennetablo(tableau, 4);
              copitablo(tableau, 4,&tableaucopier[0]);


              printf("la somme des valeurs de ce tableau vaut %ld\n", sommetablo(tableau, 4));
              printf("sa moyenne est de %ld\n", moyennetablo(tableau,4));
              printf("voici le tableau copier\n");
              // je n'ai pas mis la boucle pour dire que le copiage de tableau a bien marché car j'ai un problème
              // avant
              for (i=0; i < 4; i++)
                  {
                      printf("tableau: %ld ||| tableaucopier: %ld\n", tableau[i], tableaucopier[i]);
                  }
                  system("pause");
              return 0;
          }


          tablo.c
          #include "tablo.h"


          //fonction qui calcule la somme du tableaux..
          long sommetablo(long tableau[], long tailleTableau)
                  {
                      long somme = 0, i;
                      for(i = 0; i < tailleTableau; i++)
                          {
                             somme+= tableau[i];
                          }
                      return somme;
                  }




          //fonction qui calcule la moyenne d'un tableau
          long moyennetablo(long tableau[], long tailleTableau)
                  {
                      long moyenne = 0, i;
                      for (i = 0; i < tailleTableau; i++)
                          {
                              moyenne+=tableau[i] / 4;
                          }
                      return moyenne;
                  }



          //fonction qui devrait copier un tableau mais qui ne marche pas...
          long copitablo(long tableau[], long tailleTableau,long tableauxCopier[] )
                  {
                      long i;
                      for(i= 0; i < tailleTableau; i++)
                          {
                              tableauxCopier[i] = tableau[i];
                          }
                  }

          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2006 à 9:31:41

            Attention, tu déclare la fonction copitablo comme long, donc tu dois retourner un long.

            Met void à la place.
            • Partager sur Facebook
            • Partager sur Twitter
              26 février 2006 à 14:28:50

              Oui sa marche merci beaucoup^!!^^
              • Partager sur Facebook
              • Partager sur Twitter

              [C] Fonctions de tableaux, problème..

              × 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