1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdlib.h>
// Renvoie un nombre différent 0,1,2,... pour chacune des conditions
// Ici les conditions sont dans cet exemple "même reste de la division par 4"
int cond( int i)
{
return i%4;
}
//fonction de comparaison pour qsort
int comp(const void* p, const void*q)
{
return cond(*(int*)p) -cond(*(int*)q);
}
int main(void)
{
int i;
int tab[]= { 1,8,5,7,4,6,9,5,6,7,2,3,6,0,4,9,8};
int n = sizeof tab/sizeof *tab;
// Adresses de départ et nombre d'éléments des sous-tableaux
int * deb[4]= {NULL,NULL,NULL,NULL};
int dim[4]={0,0,0,0};
qsort(tab, n, sizeof *tab, comp);
for(i=0; i<n;i++)
{
int c = cond(tab[i]);
if(deb[c]==NULL) deb[c] = tab+i;
dim[c]++;
}
return 0;
} |
Partager