Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec ordonnerTableau

Sujet résolu
    20 avril 2006 à 22:26:06

    Donc voila a la fin du debut du cours sur les tableaux (la fin de la premiere page) on nous demande de creer une fonction qui mettra le tableau dans l'ordre croissant. Et voila mon prog :


    void ordonnerTableau(long tableau[], long tailleTableau)
    {long i;
    long j;
    long valda;
    for(i=0;i<tailleTableau;i++)

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

    {if (tableau[i]>tableau[j])
    {valda = tableau[j];
    tableau[j]=tableau[i];
    tableau[i]=valda;}
    }
    }
    }


    Le probleme c'est que je ne comprends pas du tout pourquoi quand je lui demande d'afficher ce nouveau tableau une des valeurs est remplacee par 26 et je ne comprends pas du tout pourquoi quelqu'un pourrait'il m'aider je ne vois pas ou est l'erreur???? (par ailleurs si vous avez des conseils pour une meilleure presentation de mon prog n'hesitez pas conspuez moi:) ) d'avance merci a tous ceux qui auront deja pris la peine de lire le message :)
    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2006 à 1:18:46

      ta fonction marche très bien chez moi

      j'ai essayé avec ce tableau: long tableau[10] = {95, 864, 465, 8, 54, 57, 684, 87, 55, 867};
      • Partager sur Facebook
      • Partager sur Twitter
        21 avril 2006 à 15:01:05

        Arggg en fait c'est bon j'ai trouvé mon erreur (au bout de deux jours c'était temps :) qu'est ce que ca va être sur un gros programme ^^ ).
        Enfin c'est juste que mon j (celui de la deuxieme boucle) je dois l'arrêter a tailleTableau et pas tailleTableau+1 je sais meme pas pourquoi j'avais mis le +1..... :( enfin bref merci nonpoluant d'avoir essayé de résoudre mon problème :)
        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2006 à 15:59:00

          effectivement je n'avais pas compris ton +1, mais j'ai bettement copié/collé ton code, et ça marchait très bien, meme avec le +1 ... alors j'l'ai laissé
          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2006 à 16:10:20

            Citation : nonpoluant

            effectivement je n'avais pas compris ton +1, mais j'ai bettement copié/collé ton code, et ça marchait très bien, meme avec le +1 ... alors j'l'ai laissé


            En instrumentant le code,


            #include <stdio.h>
            #include <string.h>
            #include <assert.h>

            void ordonnerTableau(long tableau[], long tailleTableau)
            {
               long i;
               long j;
               long valda;
               for (i = 0;i < tailleTableau;i++)
               {
                  for (j = i + 1;j < tailleTableau + 1;j++)
                  {
                     assert(i < tailleTableau);
                     assert(j < tailleTableau);
                     if (tableau[i] > tableau[j])
                     {
                        valda = tableau[j];
                        tableau[j] = tableau[i];
                        tableau[i] = valda;
                     }
                  }
               }
            }

            static void affichererTableau(long const tableau[], long tailleTableau)
            {
               long i;
               for (i = 0;i < tailleTableau;i++)
               {
                  printf("%4ld", tableau[i]);
               }
               printf ("\n");
            }

            int main(void)
            {
               long tableau[10] =
                  {
                     95, 864, 465, 8, 54, 57, 684, 87, 55, 867
                  };

               affichererTableau(tableau, sizeof tableau / sizeof *tableau);
               ordonnerTableau(tableau, sizeof tableau / sizeof *tableau);
               affichererTableau(tableau, sizeof tableau / sizeof *tableau);

               return 0;
            }


            on le voit tout de suite :

            95 864 465 8 54 57 684 87 55 867
            Assertion failed: j < tailleTableau, file main.c, line 15

            This application has requested the Runtime to terminate it in an unusual way.
            Please contact the application's support team for more information.

            Pose des questions si tu ne comprends pas.
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !

            Probleme avec ordonnerTableau

            × 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