tri d'index de tableau par rapport au contenu
Bonjour,
je suis totalement debutant en C et j'essaye de faire un truc en essayant
au passage de comprendre.
j'ai une variable tab[5] qui contient :
tab[0]=8;
tab[1]=3;
tab[2]=25;
tab[3]=1;
tab[4]=40;
je veux savoir au final que 4 > 2 > 0 > 1 > 3.
j'ai tout essayé avec qsort, mais rien à faire. j'arrive à trier le contenu des variables du tableau, mais pas à trier l'index en fonction du contenu.
Quelqu'un peut il me donner une idée avec un code le plus simple possible ?
Merci beaucoup.
pour vous donner une idée de mon niveau nullissime en c (en esperant que quelqu'un sera suffisement attentionné pour donner un code qui soit de mon niveau), voici ce que j'ai fait pour trier le contenu du tableau :
int tab[5];
memset( &tab, 0, sizeof tab );
tab[0]=8;
tab[1]=3;
tab[2]=25;
tab[3]=1;
tab[4]=40;
qsort(&tab[0], TAILLE, sizeof(int), Tri);
et la fonction de tri :
int Tri(const void* _a, const void* _b) {
if (*(int*)_a<*(int*)_b) return 1;
if (*(int*)_a==*(int*)_b) return 0;
if (*(int*)_a>*(int*)_b) return -1 ;
}
Re: tri d'index de tableau par rapport au contenu
Citation:
Envoyé par parisien
Code:
qsort(&tab[0], TAILLE, sizeof(int), Tri);
Code:
qsort (tab, TAILLE, sizeof *tab, Tri);
ou
Code:
qsort (tab, sizeof tab/sizeof *tab, sizeof *tab, Tri);
Citation:
et la fonction de tri :
Code:
1 2 3 4 5 6
|
int Tri(const void* _a, const void* _b) {
if (*(int*)_a<*(int*)_b) return 1;
if (*(int*)_a==*(int*)_b) return 0;
if (*(int*)_a>*(int*)_b) return -1 ;
} |
compliqué...
Code:
1 2 3 4 5 6
| int Tri (const void* a, const void* b)
{
int *pa = a;
int *pb = b;
return *pa - *pb;
} |