1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| int compare(const void* param1, const void* param2)
{
// on commence par dire que les paramètres sont des pointeurs
// sur des lignes
struct s_data* ligne1=(struct s_data *)param1;
struct s_data* ligne2=(struct s_data *)param2;
// on compare les lignes. Comme on effectue une comparaison
// sur des doubles on définit d'abord une limite à partir de laquelle
// on considère deux doubles égaux.
static double epsilon = 1e-8;
if (fabs(ligne1->distance-ligne2->distance))<epsilon {
// ici on considère que les deux lignes ont la même distance
// car la différence entre leur distance en valeur absolue
// est inférieure à notre limite epsilon
return 0;
} else if (ligne1->distance<ligne2->distance) {
// ligne1 devra se placer avant ligne2
return -1;
} else if (ligne1->distance>ligne2->distance) {
// ligne1 devra se placer après ligne2
return 1;
}
} |
Partager