Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices_3_CopierTableau

Sujet résolu
    19 octobre 2020 à 15:50:36

    Bonjour, à tous.

    Après avoir écris mon programme (Voir ci-dessous) après la compilation affiche des valeurs qui ne sont pas inscrire dans le tableauOriginal. J'ai cru un instant que c'était des adresses mais ça ne l'est pas parce que la plupart de ces valeurs sont négatifs. Veuillez s'il vous plait me dire les erreurs que j'ai commise . Merci d'avance.

    // ça c'est la fonction main
    #include <stdio.h> 
    #include <stdlib.h>
    void copie(int tableauOriginal[], int tableauCopie [], int tailleTableau);
    int main()
    {
        int tableau1[4]={2,6,8,7};
        int tableau2[4];
        copie(tableau1,tableau2,4);
    
        return 0;
    }
    void copie(int tableauOriginal[], int tableauCopie [], int tailleTableau)
               {
                   int i= 0;
                   for (i=0; i<tailleTableau ; i++)
                   {
                       tableauOriginal[i] = tableauCopie[i];
                       printf("%d\n\n",tableauCopie[i]);
                   }
               }



    -
    Edité par BérylHouessou 19 octobre 2020 à 16:00:40

    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2020 à 16:05:11

      Salut,

      Il faut faire l'inverse, c'est-à-dire copier l'original vers le 2ème tableau ...

      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2020 à 19:39:35

        Merci beaucoup, magma 

        ça a marché . Mais j'aimerai savoir si ça ne vous gène pas pourquoi le premier code ne marche pas.

        Merci d'avance.



        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2020 à 19:40:54

          > ça a marché . Mais j'aimerai savoir pourquoi le premier code ne marche pas.

          Fais-nous voir le code qui marche, on pourra parler de la différence entre les deux.

          -
          Edité par michelbillaud 19 octobre 2020 à 19:42:18

          • Partager sur Facebook
          • Partager sur Twitter
            19 octobre 2020 à 20:01:30

            // ça c'est la fonction main
            #include <stdio.h>
            #include <stdlib.h>
            
            void copie(int tableauOriginal[], int tableauCopie [], int tailleTableau);
            
            int main()
            {
            int tableau1[4]={2,6,8,7};
            int tableau2[4];
            copie(tableau2,tableau1,4);
            return 0;
            
            }
            
            void copie(int tableauOriginal[], int tableauCopie [], int tailleTableau)
            {
            int i= 0;
            for (i=0; i<tailleTableau ; i++)
            {
            tableauOriginal[i] = tableauCopie[i];
            printf("%d\n\n",tableauCopie[i]);
            }
            }
            

            -
            Edité par BérylHouessou 19 octobre 2020 à 20:25:09

            • Partager sur Facebook
            • Partager sur Twitter
              19 octobre 2020 à 20:12:30

              Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).
              • Partager sur Facebook
              • Partager sur Twitter
                19 octobre 2020 à 20:46:30

                Et donc, la question, c'est quelle serait la différence entre

                void copie(int tableauOriginal[], int tableauCopie [], int tailleTableau)
                           {
                               int i= 0;
                               for (i=0; i<tailleTableau ; i++)
                               {
                                   tableauOriginal[i] = tableauCopie[i];
                                   printf("%d\n\n",tableauCopie[i]);
                               }
                           }


                et

                void copie(int tableauOriginal[], int tableauCopie [], int tailleTableau)
                {
                int i= 0;
                for (i=0; i<tailleTableau ; i++)
                {
                tableauOriginal[i] = tableauCopie[i];
                printf("%d\n\n",tableauCopie[i]);
                }
                }

                moi j'en vois pas trop, à part dans la présentation (espaces en début de ligne).

                Donc la différence, elle est pas là.

                MAIS ALORS, OÙ POURRAIT-ELLE ÊTRE ? :-)

                Et si on demandait à celui ou celle qui l'a écrit ?



                -
                Edité par michelbillaud 19 octobre 2020 à 20:49:12

                • Partager sur Facebook
                • Partager sur Twitter
                  19 octobre 2020 à 21:07:30

                  Non, avec la fonction principale genre, main.c

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 octobre 2020 à 22:16:05

                    Voilà,  c'est ça.

                    Mais alors, pourquoi nous poser la question ?

                    Une remarque qui aidera peut être, en programmation les instructions a = b et b = a  ne font pas la même chose.

                    -
                    Edité par michelbillaud 19 octobre 2020 à 22:26:29

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 octobre 2020 à 11:26:06

                      Bonjour.

                      Ah, je vois. Merci pour votre aide et à la prochaine.

                      -
                      Edité par BérylHouessou 20 octobre 2020 à 11:28:40

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 octobre 2020 à 12:32:04

                        Pour ceux qui ne verraient pas

                        • Sous une forme ou une autre, la fonction présentée contient un gros bug : elle effectue une copie de tableauOriginal dans tableauCopie, ce qui n'est pas du tout raisonnable. Parce que si on donne des noms "parlants", c'est pour qu'ils aient un sens.
                        • Et le programme "marche" si il appelle la fonction en intervertissant les paramètres.

                        Il faut insister sur le fait qu'un programme en langage évolué est essentiellement un texte destiné à être lu, compris, corrigé, modifié par un être humain. Et il faut lui donner des textes bien écrits, sans pièges ni absurdités 

                        -
                        Edité par michelbillaud 20 octobre 2020 à 12:32:39

                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 octobre 2020 à 9:29:09

                          michelbillaud a écrit:

                          Pour ceux qui ne verraient pas

                          • Sous une forme ou une autre, la fonction présentée contient un gros bug : elle effectue une copie de tableauOriginal dans tableauCopie, ce qui n'est pas du tout raisonnable. Parce que si on donne des noms "parlants", c'est pour qu'ils aient un sens.
                          • Et le programme "marche" si il appelle la fonction en intervertissant les paramètres.

                          Il faut insister sur le fait qu'un programme en langage évolué est essentiellement un texte destiné à être lu, compris, corrigé, modifié par un être humain. Et il faut lui donner des textes bien écrits, sans pièges ni absurdités 

                          -

                          Edité par michelbillaud 20 octobre 2020 à 12:32:39

                          Justement ça m'étonne que le deuxième programme marche et que le premier qui me parait plus logique ne fonctionne pas.



                          -
                          Edité par BérylHouessou 26 octobre 2020 à 9:30:49

                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 octobre 2020 à 9:52:37

                            BérylHouessou a écrit:

                            Justement ça m'étonne que le deuxième programme marche et que le premier qui me parait plus logique ne fonctionne pas.

                            Pour copier b dans a :

                            Tu fais a=b ou b = a ?



                            • Partager sur Facebook
                            • Partager sur Twitter

                            Exercices_3_CopierTableau

                            × 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