Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème ex 3 (tableaux)

Sujet résolu
    28 février 2006 à 16:56:19

    Salut, j'ai toujours un soucis avec mes fonctions... et je trouve pas :(
    voici le code:

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

    #define NBCASES 6

    long CopierTableau(long tableau[], long CopieTableau[],long nbcases);
    void Affiche(long tableau[],long nbcases);

    int main(int argc, char *argv[])
    {
        int i = 0;
        long tableau[NBCASES],CopieTableau[NBCASES];
        for (i = 0; i < NBCASES ; i++)
        {
            printf("Quelle valeur pour la case %ld :",i);
            scanf("%ld", &tableau[i]);
            printf("La case %ld vaut : %ld",i ,tableau[i]);
        }
        CopierTableau(tableau,CopieTableau,NBCASES);
        printf("Le premier tableau a les valeurs : \n");
        Affiche(tableau,NBCASES);
        printf("Le deuxième tableau a les valeurs : \n");
        Affiche(CopieTableau,NBCASES);

       
        return 0;
    }

    long CopierTableau(long tableau[], long CopieTableau[],long nbcases)
    {
         int i = 0;
         long CopieTableau[nbcases] = {0};
         for ( i = 0; i < nbcases; i++)
         {
             CopieTableau[i] = Tableau[i];
         }
    }

    void Affiche(long tableau[], long nbcases)
    {
         int i = 0;
         for (i = 0 ; i < nbcases ; i++)
         {
             printf(tableau[i]);
         }
    } 



    c'est à la ligne long CopieTableau[nbcases] = {0}; il met une erreur de compilation...
    Merci pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2006 à 16:59:58

      Salut, c'est que dans la fonction ci dessous:
      long CopierTableau(long tableau[], long CopieTableau[],long nbcases)
      {
           int i = 0;
           long CopieTableau[nbcases] = {0};
           for ( i = 0; i < nbcases; i++)
           {
               CopieTableau[i] = Tableau[i];
           }
      }

      Tu déclare 2 fois ta variable CopieTableau, tu devrais plustot mettre ceci:
      CopieTableau[nbcases] = {0};


      ici:
      void Affiche(long tableau[], long nbcases)
      {
           int i = 0;
           for (i = 0 ; i < nbcases ; i++)
           {
               printf(tableau[i]);
           }
      } 

      un simple :
      void Affiche(long tableau[], long nbcases)
      {
           int i = 0;

               printf("%s",tableau);// tu navait pas mit le %s

      }
      Aurais suffi.

      Et si je ne me trompe pas on ne peut que définir un tableau avec les accolades "{}" quand on déclare le tableaux. Alors il faudrait mettre une boucle du genre:
           for (i=0;i<nbcases;i++)
           {
               CopieTableau[i] = 0;
           }
      • Partager sur Facebook
      • Partager sur Twitter
        28 février 2006 à 17:03:13

        ok mais ça ne change rien.. :(
        • Partager sur Facebook
        • Partager sur Twitter
          28 février 2006 à 17:11:34

          Tu n'as pas le droit de faire un tableau avec une taille de variable comme ça : long CopieTableau[nbcases] = {0};
          Et de toute façon pourquoi tu réinitialises ton tableau alors que tu l'as envoyé à ta fonction?
          Y'a aussi
          CopieTableau[i] = Tableau[i];

          où tu mets des majuscules, mais ça je suppose que c'est de l'étourderie. :p
          • Partager sur Facebook
          • Partager sur Twitter
            28 février 2006 à 17:13:47

            eh bien c'est pour copier le tableau 1 dans le tableau 2. Mais c'est pas de la que vient le problème (pour l'instant)
            • Partager sur Facebook
            • Partager sur Twitter
              28 février 2006 à 17:21:20

              Haha :p Fais attention avant de critiquer insomniak ^^ C'était le défine au dessus le nbcases.. Et l'erreur est simple: Le C est sensible a la Casse (logique, C, Casse (haha je suis trop drole ^^ ) ), c'est a dire qu'une variable en majuscule (NBCASES) et une variable en minuscules (nbcases) ne sont pas les mêmes!!! Tu as défini ta variable en majuscules, donc tu la met partout en majuscules ^^ (remplace ces nbcases par des NBCASES)

              EDIT: Faut avouer que tu as raison (insomniak) pour le "Tableau": Tu (Romino power) dois mettre tableau: tu as déclaré ta variable en haut en mettant tableau donc..
              • Partager sur Facebook
              • Partager sur Twitter
                28 février 2006 à 17:31:01

                Eh bien ça ne fonctionne toujours pas... :(:(:(
                • Partager sur Facebook
                • Partager sur Twitter
                  28 février 2006 à 17:32:57

                  Citation : Romino Power

                  Eh bien ça ne fonctionne toujours pas... :(:(:(


                  J'ai tester chez moi et ca fonctione.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 février 2006 à 17:35:43

                    pacool==>Je sais pas où t'as vu Insomniak sur ce topic, je crois que tu confonds avec moi^^. Et oui j'avais vu le define, mais j'étais pas trop sûr en fait...alors tant pis j'ai tenté quand même^^.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 février 2006 à 17:48:03

                      Il y a pas qq qui voudrait mettre le code qui fonctionne parce que je suis perdu là :euh:
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        28 février 2006 à 17:57:50

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

                        #define NBCASES 6

                        long CopierTableau(long Tableau[], long CopieTableau[],long nbcases);
                        void Affiche(long tableau[],long nbcases);

                        int main(int argc, char *argv[])
                        {
                            int i = 0;
                            long tableau[NBCASES],CopieTableau[NBCASES];
                            for (i = 0; i < NBCASES ; i++)
                            {
                                printf("Quelle valeur pour la case %ld :",i);
                                scanf("%ld", &tableau[i]);
                                printf("La case %ld vaut : %ld",i ,tableau[i]);
                            }
                            CopierTableau(tableau,CopieTableau,NBCASES);
                            printf("Le premier tableau a les valeurs : \n");
                            Affiche(tableau,NBCASES);
                            printf("Le deuxième tableau a les valeurs : \n");
                            Affiche(CopieTableau,NBCASES);

                           
                            return 0;
                        }

                        long CopierTableau(long Tableau[], long CopieTableau[],long nbcases)
                        {
                             //On notera que l'on doit impérativement passer dans une boucle. En effet CopieTableau = Tableau modifie le pointeur
                             for ( int i = 0; i < nbcases; i++)
                             {
                                 CopieTableau[i] = Tableau[i];
                             }
                        }

                        void Affiche(long tableau[], long nbcases)
                        {
                             for (int i = 0 ; i < nbcases ; i++)
                             {
                                 printf(tableau[i]);
                             }
                        }


                        Esseille avec sa?
                        (Si sa marche pas, fait un copier/coller des ereures de compilation, sa aide)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 février 2006 à 18:33:39

                          Revoilà le code avec quelques modifications pour que ça fonctionne( par exemple dans affiche il y avait une erreur de compilation, il n'y en a plus mais ça n'affiche pas les valeurs mais des smileys... Dois-je afficher le contenu avec une boucle?


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

                          #define NBCASES 6

                          long CopierTableau(long Tableau[], long CopieTableau[],long nbcases);
                          void Affiche(long tableau[],long nbcases);

                          int main(int argc, char *argv[])
                          {
                              int i = 0;
                              long tableau[NBCASES],CopieTableau[NBCASES];
                              for (i = 0; i < NBCASES ; i++)
                              {

                                  printf("Quelle valeur pour la case %ld :",i + 1);
                                  scanf("%ld", &tableau[i]);
                                  printf("La case %ld vaut : %ld\n",i ,tableau[i]);
                                  getchar();
                              }
                              CopierTableau(tableau,CopieTableau,NBCASES);
                              printf("Le premier tableau a les valeurs : \n");
                              Affiche(tableau,NBCASES);
                              printf("Le deuxième tableau a les valeurs : \n");
                              Affiche(CopieTableau,NBCASES);
                              getchar();
                             
                              return 0;
                          }

                          long CopierTableau(long Tableau[], long CopieTableau[],long nbcases)
                          {
                               //On notera que l'on doit impérativement passer dans une boucle. En effet CopieTableau = Tableau modifie le pointeur
                               for ( int i = 0; i < nbcases; i++)
                               {
                                   CopieTableau[i] = Tableau[i];
                               }
                          }

                          void Affiche(long tableau[], long nbcases)
                          {
                               for (int i = 0 ; i < nbcases ; i++)
                               {
                                   printf("%s",tableau);
                               }
                          }
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            28 février 2006 à 20:11:22

                            C'est simplement qu'il faut faire un printf("%ld", tableau[i]) >_<
                            • Partager sur Facebook
                            • Partager sur Twitter

                            problème ex 3 (tableaux)

                            × 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