Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP tableau

demande explication sur ordonner !

Sujet résolu
    14 juin 2006 à 23:44:03

    bonsoir
    J'ai fini le tp sur les tableaux :p
    Les 4 premiers exercices = faciles :-° (si si, la logique du cours)
    Mais arrivé à l' exercice 5, là je me suis pris la tête, j' ai regardé sur le forum pour me diriger :euh: et j' ai fini par pondre ma fonction ordonner!!!

    donc àprès plusieures tantatives, j' ai:
    void ordonnerTableau(long tableau[],long tailleTableau)
    {
            long i, j,tempo;
            for (i=0;i<tailleTableau;i++)
            {
                    for (j=0;j<tailleTableau;j++)
                    {
                            if(tableau[j]<tableau[i])
                            {
                                    tempo=tableau[i];
                                    tableau[i]=tableau[j];
                                    tableau[j]=tempo;
                                    printf("i=%ld  j=%ld\n",tableau[i],tableau[j]);
                            }
                    }
            }
    }


    Mais le problème, c' est que je ne comprend pas complètement mon code C o_O
    Oui vous avez bien lu , je n' ai pas compris ce que j' ai fais ?!?!
    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2006 à 2:22:30

      bonsoir.

      je vais essayer de t'éclairer sur TON code ^^

      il consiste à prendre une case du tableau ( celle d'indice i ) et de la comparer successivement avec les autres cases du tableau ( celles d'indice j) et si tableau[j] < tableau[i] on échange les valeurs.

      Mais ... avec ton code le tableau après tri est le même que celui avant tri.

      Pouquoi?

      imagine ce tableau {4,3,2}

      voyons les changements pendant la fonction.

      i = 0 j = 0 -> 4 < 4 ? non -> {4,3,2}
      i = 0 j = 1 -> 3 < 4 ? oui -> {3,4,2}
      i = 0 j = 2 -> 2 < 3 ? oui -> {2,4,3}
      i = 1 j = 0 -> 2 < 4 ? oui -> {4,3,2} ... la est le problème donc au final le tableau sera exactement le même.

      voila une correction !

      void ordonnerTableau(long tableau[],long tailleTableau)
      {
              long i, j,tempo;
              for (i=0;i<tailleTableau;i++)
              {
                      for (j=i+1;j<tailleTableau;j++) /* enffet apres un premier passage , tu est sur que la valeur de tableau[0] est la plus petite. pourquoi la remélanger dans ce cas? alors que si j = i sa ne reprendra pas la case en compte. pourquoi j = i+i? bah pourquoi comparer tableau[i] et tableau[j] quand j = i ...*/
                      {
                              if(tableau[j]<tableau[i])
                              {
                                      tempo=tableau[i];
                                      tableau[i]=tableau[j];
                                      tableau[j]=tempo;
                                      printf("i=%ld  j=%ld\n",tableau[i],tableau[j]);
                              }
                      }
              }
      }


      voila en espérant t'avoir éclairé ^^







      • Partager sur Facebook
      • Partager sur Twitter
        16 juin 2006 à 9:07:21

        Merci de ta réponce mais tu me dis que mon code n' est pas bon !
        Alors qu' il me trie (très bien o_O ) mon tableau de 10 avec un 0 et -.

        P.S ton code semble être utilisé par tout le monde (sur le forum :p ) donc je vais faire de même :)

        merci @+ ;)
        • Partager sur Facebook
        • Partager sur Twitter

        TP tableau

        × 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