Éffaces les ';' à la fin de tes for Si tu démarres j à 0, tu vas forcément comparer des éléments du début avec d'auttres plus loin et tu risques de défaire ce que tu as déjà fait. Il faut commencer avec j=i+1 Ensuite tu as mis i<tailletableau la dernière valeur sera tailletableau-1 j vaudra tailletableau. Donc, tu feras une boucle inutile. Il faut tester i<tailletableau-1 Finalement, il n'est pas conseillé d'afficher dans une fonction qui fait autre chose. Écris-toi une fonction d'affichage que tu appelleras du main. Tu peux même l'appeler avant et après le tri pour comparer.
- Edité par PierrotLeFou 28 août 2021 à 2:54:17
Le Tout est souvent plus grand que la somme de ses parties.
Comme dit Pierrot les point virgule après le for sont en trop et mettent fin à la boucle donc les blocs ne sont exécuté qu'une seule fois.
Sans ces point virgule ton code fonctionne.
PS : Où en es-tu de ta fonction copierTableau, c'est bien de poser des questions, mais c'est bien aussi de répondre au personnes qui t'on apporté des réponses !
Son code ne fonctionnera pas si on commence j=0. Essaies le.
Je l'ai essayé, il fonctionne, je ne vois pas pourquoi il ne fonctionnerait pas ! Je comprend bien que ce n'est pas utile de comparer tab[0] avec tab[0] mais ça n'a pas d'incidence. Après si c'est la performance que tu cherche, dans ce cas il faut utiliser qsort.
Alors, je donne mon code pas coloré ... avec le résultat: - #include <stdio.h> void display(int array[], int size) { for(int i=0; i<size; i++) printf("%d ", array[i]); printf("\n"); } void sorting(int array[], int size) { for(int i=0; i<size; i++) { for(int j=0; j<size; j++) { if(array[j]<array[i]) { int tmp =array[i]; array[i]=array[j]; array[j]=tmp; } } } } int main(void) { int tab[5]={3, 2, 4, 5, 1}; display(tab, 5); sorting(tab, 5); display(tab, 5); } - 3 2 4 5 1 5 4 3 2 1 C'est censé être en ordre ascendant ...
- Le PO demande de pouvoir écrire lui-même un petit programme de tri. Ça fait partie des cours. Avec les corrections suivantes dans ma fonction sorting() tel que je le suggérais, ça fonctionne: - for(int i=0; i<size-1; i++) { for(int j=i+1; j<size; j++) { - 3 2 4 5 1 1 2 3 4 5
- Edité par PierrotLeFou 29 août 2021 à 1:40:08
Le Tout est souvent plus grand que la somme de ses parties.
Fonction 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.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.