Qsort sur une ligne d'un tableau 2d

cs_thespartan Messages postés 36 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 26 mai 2008 - 12 nov. 2007 à 15:17
cs_thespartan Messages postés 36 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 26 mai 2008 - 12 nov. 2007 à 17:51
Bonjour.
Jai un tableau des x,y,z de N éléments. J'aimerais trier ce tableau selon sa 3ème ligne par ordre croissant or quand j'appele qsort, il le fait que selon la 1ère ligne. Comment faire pour que le tri se fasse selon la 3ème ligne?

voici mon code :

static int compare (void const *a, void const *b)
    {
       /* definir des pointeurs type's et initialise's
          avec les parametres */
       int const *pa = a;
       int const *pb = b;
   
       /* evaluer et retourner l'etat de l'evaluation (tri croissant) */
       return *pa - *pb;
}

  qsort (T, N, sizeof *T, compare );   

Spartan

2 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
12 nov. 2007 à 15:43
Salut il faut que tu lui precise la relation de supériorité sinon il ne sait pas sur quel donnée travailler.

bool operator<(const Point3D &Pt1, const Point3D &Pt2)
{
    return Pt1.z < Pt1.z;
}

et la il devrait te trier ton tableau comme tu le veux.
A+
0
cs_thespartan Messages postés 36 Date d'inscription samedi 3 février 2007 Statut Membre Dernière intervention 26 mai 2008
12 nov. 2007 à 17:51
La ligne : " return *pa - *pb; " fait office de test de supériorité. Etant donné que la fonction renvoit un entier : 0 si a=b, <0 si a0 si a>b. (donc ça ne m'aide pas)

Spartan
0
Rejoignez-nous