i va de 0 à taille-1 mais tu accèdes à la position i+1, donc hors du tableau.
Que crois-tu faire dans ta boucle do ... while? Tu revérifies toujours le même élément.
Je suppose que tu boucles indéfiniment parce que le test est à l'envers. Tu le fais une fois, c'est suffisant. Mais tu dois recommencer du début jusqu'à l'avant dernière position. Si tu affiches à la fin de la fonction (mauvaise pratique) tu verras que seul le plus grand est à sa place. Donc il faut recommencer pour les N-1 première positions, etc ...
Par exemple:
while(taille > 1) {
for(int i=0; i<taille-1; i++) {
...
}
taille--;
}
- Edité par PierrotLeFou 20 avril 2022 à 7:30:45
Le Tout est souvent plus grand que la somme de ses parties.
Pour ce genre de petit programme, je recommande fortement de mettre des 'printf' partout (par exemple afficher tout le tableau) pour comprendre ce qu'il fait. Il suffit d'écrire une petite fonction de ce genre :
void affichetableau(int tab[], int n)
{
printf("[ ") ;
for (int i = 0 ; i < n ; i++) printf("%d ", tab[i]);
printf("]\n") ;
}
et de l'appeler un peu partout. Exemple :
printf("Avant le for : "); affichetableau(lst, taille);
for(i=0; i<taille; i++)
{
printf("Avant le do, i = %d : ", i); affichetableau(lst, taille);
do
{
if(lst[i] > lst[i+1])
{
a = lst[i];
lst[i] = lst[i+1];
lst[i+1] = a;
}
}while(lst[i] < lst[i+1]);
printf("Après le do, i = %d : ", i); affichetableau(lst, taille);
}
L'utilisation d'une fonction simplifie en effet le code et est plus facile à enlever quand le programme fonctionne. KitaeSEO a déjà compris qu'après le premier tour de boucle, seul le dernier est bien placés.
Le Tout est souvent plus grand que la somme de ses parties.
Exercice 5, ordonner le 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.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.