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

MissSixty Messages postés 18 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 25 août 2004 - 18 août 2004 à 16:35
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 18 août 2004 à 17:54
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
(...)
A voir également:

7 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 16:54
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?
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
18 août 2004 à 17:12
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-)
0
MissSixty Messages postés 18 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 25 août 2004 1
18 août 2004 à 17:13
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]
0
MissSixty Messages postés 18 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 25 août 2004 1
18 août 2004 à 17:19
Ç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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:21
ben regarde avec qsort, tu lui passe le tableau et une fonction qui fait la comparaison

http://www.cplusplus.com/ref/cstdlib/qsort.html
0
MissSixty Messages postés 18 Date d'inscription mardi 10 août 2004 Statut Membre Dernière intervention 25 août 2004 1
18 août 2004 à 17:47
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 =)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:54
oui ca peux est remplacer par un tableau

double tab[N][3];
0
Rejoignez-nous