CADxp: TRIER UNE LISTE sur 4 éléments - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

TRIER UNE LISTE sur 4 éléments

#1 L'utilisateur est hors-ligne   PHILPHIL 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1024
  • Inscrit(e) : 24-janvier 06
  • LocationNANTES

Posté 31 juillet 2019 - 13:27

Hello

j'ai une liste "listepropriete" avec 4 éléments
et je cherche a la trier suivant le 4ieme puis le 3ieme puis le 2 ieme
ce bout de lisp devrait le faire normalement

(setq listepropriete2 (vl-sort listepropriete
'(lambda (a B)
(if (= (cadddr a) (cadddr B))
(if (= (caddr a) (caddr B))
(< (cadr a) (cadr B))
(< (caddr a) (caddr B))
)
(< (cadddr a) (cadddr B))
)
)
)
)


un bout de la liste "listepropriete2"
hors je constate que vers la ligne 66 et au de la le trie ne semble plus etre bon
ca revient a 27.0 (depuis quand 27.0 est plus grand que 293.0 ?)

la ligne 66 a 71 devrait etre apres la ligne 5
ca trie pas a 8 chiffres ( que l'on ne voit pas en fait ) apres la virgule quand meme ?

[0] ("3E6102" "D" 27.0 37.2)
[1] ("3E611A" "D" 27.0 37.2)
[2] ("4847BD" "D" 27.0 37.2)
..
[5] ("484805" "D" 27.0 37.2)
[6] ("3E5AF0" "B" 112.5 37.2)
[7] ("48499D" "B" 112.5 37.2)
[8] ("4849B5" "B" 112.5 37.2)
[9] ("1866C" "B" 112.5 37.2)
[10] ("48B3A1" "B" 112.5 37.2)
..
[14] ("484D15" "D" 112.5 37.2)
[15] ("17A66" "D" 112.5 37.2)
...
[22] ("1757F8" "B" 124.0 37.2)
[23] ("3E5F52" "D" 124.0 37.2)
[24] ("3E5958" "A" 125.5 37.2)
..
[29] ("484CE5" "A" 125.5 37.2)
[30] ("17B08" "A" 125.5 37.2)
[31] ("18528" "A" 125.5 37.2)
[32] ("48B401" "A" 125.5 37.2)
..
[41] ("3E5700" "B" 267.0 37.2)
[42] ("48517D" "B" 267.0 37.2)
[43] ("485195" "B" 267.0 37.2)
[44] ("16A94" "B" 267.0 37.2)
[45] ("48BB81" "B" 267.0 37.2)
..
[51] ("3E58E0" "B" 269.0 37.2)
[52] ("3E5EAA" "B" 269.0 37.2)
..
[57] ("4850BD" "B" 269.0 37.2)
[58] ("4850D5" "B" 269.0 37.2)
[59] ("16D1C" "B" 269.0 37.2)
[60] ("1773C" "B" 269.0 37.2)
..
[64] ("48BAD9" "B" 269.0 37.2)
[65] ("3E5520" "B" 293.0 37.2)
[66] ("188F39" "D" 27.0 37.2)
[67] ("188F51" "D" 27.0 37.2)
[68] ("48B1C1" "D" 27.0 37.2)
[69] ("48B1D9" "D" 27.0 37.2)
[70] ("48B1F1" "D" 27.0 37.2)
[71] ("48B209" "D" 27.0 37.2)
[72] ("174BD0" "B" 114.5 37.2)
[73] ("4665C7" "B" 114.5 37.2)


Phil
Autodesk Architecture 2019 sous windows 10 64
24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
0

#2 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11291
  • Inscrit(e) : 02-septembre 05

Posté 31 juillet 2019 - 19:08

 PHILPHIL, le 31 juillet 2019 - 13:27 , dit :

ca trie pas a 8 chiffres ( que l'on ne voit pas en fait ) apres la virgule quand meme ?


Bien sûr que oui. On comapare les nombre réels en utilisant tous les chiffres significatifs (environ 15 sans compter les 0 au début ou à la fin).
Essaye:
(< 37.20000000000002 37.20000000000001)
(< 37.20000000000002 37.20000000000003)

Si tu veux comparer des nombre arrondis, il faut les arrondir dans les comparaisons de la fonction de tri.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#3 L'utilisateur est hors-ligne   PHILPHIL 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1024
  • Inscrit(e) : 24-janvier 06
  • LocationNANTES

Posté 31 juillet 2019 - 22:54

hello Gile

merci

oui j'ai bien un parametre avec LONGUEUR : 37.20000000000001

plutot que d'arrondir dans la fonction de tri, j'ai arrondi les données en créant la liste

Phil
Autodesk Architecture 2019 sous windows 10 64
24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)