Partage
  • Partager sur Facebook
  • Partager sur Twitter

Demande de correction

Pour l'exercice du cours des tableaux

    14 avril 2006 à 1:46:53

    Salut à tous,

    Voilà, je suis débutant en C, et je dois dire (après avoir lu les cours XHTM/CSS et PHP) que je me plais à découvrir le monde de la programmation.

    Voilà, je voulais vous montrer ma fonction ordonnerTableau, pour savoir ce que vous en pensez, voici le code :

    // Fonction qui ordonne un tableau par ordre croissant.
    void ordonnerTableau(long tableau[], long tailleTableau)
    {
        long i, j, indice = 0, tampon;
        for (i = 0; i < tailleTableau; i++)
        {
            for (j = 0; j < tailleTableau; j++)
            {
                if (tableau[i] > tableau[j])
                {
                    indice++;
                }
            }
            tampon = tableau[i];
            tableau[i] = tableau[indice];
            tableau[indice] = tampon;
            indice = 0;
        }
    }


    J'ai bien testé le code, ça fonctionne ^^

    @+
    • Partager sur Facebook
    • Partager sur Twitter
      14 avril 2006 à 8:10:34

      Citation : Jerebenz


      Voilà, je voulais vous montrer ma fonction ordonnerTableau, pour savoir ce que vous en pensez, voici le code :

      J'ai bien testé le code, ça fonctionne ^^


      Insuffisament testé ...

      #include <stdio.h>

      #define NELEM(a) (sizeof(a)/sizeof*(a))

      // Fonction qui ordonne un tableau par ordre croissant.
      void ordonnerTableau(long tableau[], long tailleTableau)
      {
         long i, j, indice = 0, tampon;
         for (i = 0; i < tailleTableau; i++)
         {
            for (j = 0; j < tailleTableau; j++)
            {
               if (tableau[i] > tableau[j])
               {
                  indice++;
               }
            }
            tampon = tableau[i];
            tableau[i] = tableau[indice];
            tableau[indice] = tampon;
            indice = 0;
         }
      }

      void print(long const a[], size_t n)
      {
         size_t i;

         for (i = 0; i < n; i++)
         {
            printf ("%3ld", a[i]);
         }
         printf ("\n");
         printf ("\n");
      }

      int main(int argc, char *argv[])
      {

         long a[] =
            {
               0, -1, -3, -2
            };

         print(a, NELEM(a));
         ordonnerTableau(a, NELEM(a));
         print(a, NELEM(a));

         return 0;
      }


      0 -1 -3 -2

      -2 -3 -1 0

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        14 avril 2006 à 9:40:15

        Effectivement, je n'avais pas assez testé mon code pour me rendre compte de ce disfonctionnement, et je te dis merci de me l'avoir montré :)

        J'ai finalement corrigé le problème en ajoutant une condition.

        J'ai ajouté des commentaires dans mon code pour que ça soit plus compréhensible.

        // Fonction qui ordonne un tableau par ordre croissant.
        void ordonnerTableau(long tableau[], long tailleTableau)
        {
            long i, j, indice = 0, tampon;
            for (i = 0; i < tailleTableau; i++)
            {
               
                /* Ici, je détermine à quelle position devra
                 * se trouver la valeur courante.
                 * tableau[indice] est la position voulue. */

                indice = 0;
                for (j = 0; j < tailleTableau; j++)
                {
                    if (tableau[i] > tableau[j])
                    {
                        indice++;
                    }
                }
               
                // Je déplace la valeur où il faut (tableau[indice]).
                tampon = tableau[i];
                tableau[i] = tableau[indice];
                tableau[indice] = tampon;
               
                // Si j'ai fais un changement, je re-vérifie cette case du tableau.
                if (tableau[i] != tableau[indice])
                {
                    i--;
                }
            }
        }


        Là, j'ai bien vérifié qu'il fonctionne, avec un tableau de 10 valeur en mixant positifs et négatifs hehe.

        Vous trouvez ce code bon ?

        Les conseils sont les bienvenus.

        @+
        • Partager sur Facebook
        • Partager sur Twitter

        Demande de correction

        × 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