Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérification de code C

(pas trop long...)

Sujet résolu
    21 octobre 2006 à 19:46:51

    Voilà, j'essais de créer une fonction qui classe les valeur d'un tableau, du plus petit au plus grand, mais voilà, enfin bon vous comprendrez par vous même...Voilà le code source :
    void classement (long tableau[], long tailleTableau)
    {
        long i, tableauBis [1000] = {0}, nbEnDessous = 0, ind;
        for ( i = 0; i < tailleTableau; i++)
        {
            for ( ind = 0; ind < tailleTableau; ind++)
            {
                if (tableau[ind] <= tableau[i])
                {
                    nbEnDessous++;
                }
            }
            tableauBis[nbEnDessous] = tableau[i];
            nbEnDessous = 0;
        }
        for ( i = 0; i < tailleTableau; i++)
        {
            tableau[i] = tableauBis[i];
        }
    }


    puis je lui donne un tableau de 5 cases : {20, 3, 2, 4, 1}

    et je vérifie en suite avec :
    for ( i = 0; i < tailleTableau; i++)
            {
                printf("\nLa valeur de la case est : %ld", tableau[i]);
            }


    Mais voilà : problème : :(

    La valeur de la case est : 0
    La valeur de la case est : 0
    La valeur de la case est : 1
    La valeur de la case est : 2
    La valeur de la case est : 3
    Press ENTER to continue.


    Svp, aidez moi à arranger ça...
    • Partager sur Facebook
    • Partager sur Twitter
      21 octobre 2006 à 21:35:23


      void classement(long tableau[], long tailleTableau)
      {
          long i, j, temp;

          for ( i = 0; i < tailleTableau; i++)
          {
              for ( j = i+1; j < tailleTableau; j++)   /* on teste les cases apres la case i */
              {
                  if (tableau[j] < tableau[i])
                  {
                      temp = tableau[i];        /* On inverse les 2 cases         */
                      tableau[i] = tableau[j]/* par la methode classique       */
                      tableau[j] = temp;        /* en utilisant une variable temp */
                  }
              }
          }
      }


      Voilà un code bien plus rapide, calqué sur le tien. Essaie de comprendre ce qui a changé et pourquoi cela a changé ;)
      Un prend d'abord la premiere case (i=0), on compare toutes les autres cases à cette premiere case et on met donc la plus petite valeur dans cette premiere case.
      Puis on prend la 2eme case (i=1), on lui compare toutes les cases suivantes (faut pas lui comparer la premiere, car on sait qu'elle ets la plus petite), soit donc j>i .....

      etc etc...
      • Partager sur Facebook
      • Partager sur Twitter

      Vérification de code C

      × 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