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.
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...
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.