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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
int sort_function( const void *a, const void *b); // prototypage de ma fonction de tri.
struct personne // définition de la structure (en global)
{ char * nom;
long age;
};
struct personne* liste[3]; // en global mon tableau
struct personne a1= {"isa",3};
struct personne a2= {"steph",33};
struct personne a3= {"fred",30};
int main (void) // point d'entree
{
liste[0]=&a1; // affectations
liste[1]=&a2;
liste[2]=&a3;
int i=0;
// affichage avant...
for ( i = 0; i <3; i++) printf("%d %s à %d\n",i, liste[i]->nom,liste[i]->age);
printf("\n\n");
qsort((void *)liste, 3, sizeof(liste[0]), sort_function);
// affichage apres
for ( i = 0; i <3; i++) printf("%d %s à %d\n",i, liste[i]->nom,liste[i]->age);
return 0;
}
//--- la fonction de tri.
int sort_function( const void *a, const void *b)
{
// trie par age :
struct personne* aa, *bb;
aa=(struct personne*)a;
bb=(struct personne*)b;
//--return ((personne*)a)->age - ((personne*)b)->age ;
long aaa,bbb; // je detaille, marche pas mieux
aaa=aa->age;
bbb=bb->age;
return aaa-bbb;
/*
// trie par nom :
return strcmp(((personne*)a)->nom,((personne*)b)->nom);
/**/
} |
Partager