Partage
  • Partager sur Facebook
  • Partager sur Twitter

[c] Tableaux

Exercice 5 si près du but :p

Sujet résolu
    7 avril 2006 à 18:24:24

    Bon je me suis mis aux tableaux .. Je suis a l'exercice 5 (le plus dur :D )
    donc forcément jai un problème :-° ...

    Mon code:
    #include <stdio.h>
    #include <stdlib.h>

    void ordonnerTableau(long tableau[], long tailleTableau);

    int main(int argc, char *argv[])
    {
    long tableau[4]={124,984,451,4};
    ordonnerTableau(tableau,4);
    system("PAUSE");       
    return 0;
    }
    //fonction pour ordonner
    void ordonnerTableau(long tableau[], long tailleTableau)
    {
    //variables
    long i=0, j=0,k=0, copie[4]={0};


    for (j = 0; j < tailleTableau ; j++)
    {
         for (i = 0; i < tailleTableau ; i++)
         {
    //on compare le nombre avec le nombre suivant si le nombre suivant et plus petit on intervertit les deux.
         if (tableau[i]>tableau[i+1])
         {
                                   
         copie[i+1] = tableau[i+1];
         copie[i] = tableau[i];
         tableau[i] = tableau[i+1];
         tableau[i+1] =copie[i];   
         }
         }
    }
    //affiche le tableau
    for (k = 0; k < tailleTableau ; k++)
    printf("%ld\n",tableau[k]);
    }


    Ca m'affiche 4 , 22, 124, 451!!
    o_O Pourquoi 22? alors que le nombre c'est 984 o_O . Si quelqu'un peut m'aider :)

    Ps: Avec beaucoup d'autres exemples ca marche mais celui-ci comprend pô.. :(
    • Partager sur Facebook
    • Partager sur Twitter
      7 avril 2006 à 18:28:02

      Dépassement de tableau, change le deuxième for comme ceci :
      for (i = 0; i < tailleTableau - 1; i++)
      • Partager sur Facebook
      • Partager sur Twitter
        7 avril 2006 à 18:32:30

        Yahoo!! ^^ bravo je pensé pas qu'on puisse resoudre mon problème aussi rapidement bravo et encore merci :p
        • Partager sur Facebook
        • Partager sur Twitter
          11 avril 2006 à 15:40:48

          Excusez moi je n'ai pas compris le principe de la comparaison.Vous pourriez m'expliquer svp ? ^^
          • Partager sur Facebook
          • Partager sur Twitter
            11 avril 2006 à 20:43:27

            Citation : kanabeach



            long i=0, j=0,k=0, copie[4]={0};

                 copie[i+1] = tableau[i+1];
                 copie[i] = tableau[i];
                 tableau[i] = tableau[i+1];
                 tableau[i+1] =copie[i];   



            Ton swap est extrèmement compliqué.

            On a 2 variables A et B. On veut echanger (swap) les valeurs.

            Si on met B dans A, On a perdu A. Donc, il faut le sauvegarder. Il suffit d'une variable temporaire pour conserver la valeur de A le temps qu'on libère B...

            TMP = A
            A = B
            B = TMP

            voilà, c'est tout.

            Pas besoin de tableau.

               <...>
               /* swap */
               {
                 long copie = tableau[i + 1];
                 tableau[i + 1] = tableau[i];   
                 tableau[i] = copie[i];
               }
               <...>


            Petit exercice supplémentaire : ecrire une fonction qui echange les valeurs.

            L'algorithme que tu as trouvé et mis au point s'appelle bubble-sort (tri bulle). Il est simple et suffisant pour des petits tableaux (<100 éléments). Au-dessus, on utilise le quick-sort (tri rapide). Le langage C fourni qsort() qui peut (ou non) implémenter un quick-sort.
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !

            [c] 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