Un programme qui tri un tableau dans l'ordre croissant
saidinfo
Messages postés
17
Statut
Membre
-
saidinfo Messages postés 17 Statut Membre -
saidinfo Messages postés 17 Statut Membre -
j'ai déja essai avec s'est valeur (21,18,20,17,19) mais malheureusement joujours la case n°4 ne change pas aidez moi svp !!
#include <stdio.h>
#include <stdlib.h>
#define nb 5
void tri(int t[],int i)
{ int v=0,j=0;
for (i=1;i<nb;i++)
{
v=t[i];
j=i;
while (t[i-1]>v)
{
v=t[i-1];
t[i-1]=t[i];
t[i]=v;
}
}
for (i=nb-1;i>0;i--)
{
v=t[i];
j=i;
while(t[i-1]>v)
{
v=t[i-1];
t[i-1]=t[i];
t[i]=v;
}
}
}
int main()
{
int i,t[100];
printf("un programme qui tri dans l'ordre croisssant d'un tableux !\n");
for (i=0;i<nb;i++)
{
printf("entrer la valeur n°%d\n",i+1);
scanf("%d",&t[i]);
}
printf("le tableau inverse est \n");
tri(t,i);
i=0;
while (i<nb)
{
printf("%d\t",t[i]);
i++;
}
return 0;
}
2 réponses
-
Le problème vient de ta fonction de tri !
Le while n'est pas adapté ici, un if convient. Mais je pense que tu as essayé de coder, sans succès, un tri à bulles.
Regarde ici pour avoir une idée de comment implémenter le tri à bulles : https://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles
Accessoirement, fais gaffe quand tu déclares ton tableau de taille 100 (ligne 35), et que tu utilises nb (= 5) partout ailleurs.
Ici ça ne pose pas de problème, mais si tu changes nb pour une valeur plus grande que 100, tu auras des problèmes. -