Tri coordonnées XYZ dans tableau de type xyz[].s[]

Signaler
Messages postés
18
Date d'inscription
mardi 10 août 2004
Statut
Membre
Dernière intervention
25 août 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Salut !

Mon tableau xyz[NbNoeuds].s[va de 0à2] permet d'associer la coordonnées x, y, z à un noeud. Ces coordonnées ne suivent aucun ordre particulier et peuvent se répéter. J'aimerais donc trouver un moyen de trier les valeurs du tableau de manière à ce que les triplets de coordonnées qui sont identiques se retrouvent une à la suite de l'autre dans le nouveau tableau trié.

J'ai lu quelques sources et je n'ai pas trouvé l'information que je cherchais alors si quelqu'un pourrait m'aider, ça serait apprécier.

Merci =)
______________________________

Pour aider à la compréhension si j'affiche le contenu du tableau xyz, voici ce que j'obtiens :

cout << xyz[i].s[0] << xyz[i].s[1] << xyz[i].s[2] << endl;
1.03125 -3.96813 0.2375
1.11062 -3.96813 0.2375
1.11062 -3.88875 0.2375
1.03125 -3.88875 0.2375
1.03125 -3.88875 0.2375
1.11062 -3.88875 0.2375
1.11062 -3.80938 0.2375
(...)

7 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
tu as qsort en c (pour c-style array) et std::sort en c++ pour les conteneur de la stl

mais j'ai pas compris, tu veux que ce soit trié comment?
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
au lieu d'en faire un tableau, fait en une liste

tu pourra définir des opérateurs de comparaisons & de tris

Personnellement, je créerait une classe noeud avec les 2 valeurs
ou je donnerai les operateurs suivants:

bool operator<(const BPaire& in)
bool operator<=(const BPaire& in)
bool operator==(const BPaire& in)

ensuite, j'utiliserai une
BListeIndir
triée, avec doublon

au pire regarde ces srces, ça peut t'intéresser

Magic Nono: l'informagicien! 8-)
Messages postés
18
Date d'inscription
mardi 10 août 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Pour rendre un peu plus clair ce que je veux... c'est de trier en ordre ces données.

EX. : si j'ai... faudrait que ça donne...
0.3, 0.5, 0.6 0.3, 0.5, 0.6
0.3, 0.7, 0.9 0.3, 0.5, 0.6
0.3, 0.5, 0.6 0.3, 0.7, 0.9
0.5, 0.7, 0.8 0.5, 0.7, 0.8

Je ne sais pas si ça te permettra de m'aider... je peux te fournir plus d'explications si tu veux.

Merci =)

PS: peut-être qu'un simple exemple m'aiderait à comprendre comment combiner qsort() avec mon tableau xyz[i].s[j]
Messages postés
18
Date d'inscription
mardi 10 août 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Ça s'est pas affiché comme j'espérais... fautdrait plutôt lire :

EX. : si j'ai... faudrait que ça donne...
0.3, 0.5, 0.6
0.3, 0.7, 0.9
0.3, 0.5, 0.6
0.5, 0.7, 0.8

faudrait que ça donne...
0.3, 0.5, 0.6
0.3, 0.5, 0.6
0.3, 0.7, 0.9
0.5, 0.7, 0.8
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
ben regarde avec qsort, tu lui passe le tableau et une fonction qui fait la comparaison

http://www.cplusplus.com/ref/cstdlib/qsort.html
Messages postés
18
Date d'inscription
mardi 10 août 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Petite intérrogation... DJL :

est-ce qu'un tableau basé sur une structure comme le mien présentement peut se traiter comme un tableau à 2dimensions?

J'ai vu quelques exemples sur le web, je pourrais probablement m'y référer. Qu'en penses-tu?

En fait, ma question de départ aurait plutôt dû être celle-là.

Merci =)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
oui ca peux est remplacer par un tableau

double tab[N][3];