Aller au contenu

TRIER UNE LISTE sur 4 éléments


PHILPHIL

Messages recommandés

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 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

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
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité