Aide codage: le tri croissant de valeurs contenus dans des variables
Forums › ProRealTime forum Français › Support ProBuilder › Aide codage: le tri croissant de valeurs contenus dans des variables
- This topic has 6 replies, 3 voices, and was last updated 5 years ago by RicLg.
-
-
08/06/2019 at 1:54 PM #104283
Bonjour,
Je souhaiterai une aide sur le codage d’un algorithme de tri, UNIQUEMENT avec des IF
J’ai 4 variables Tata, Tete,Titi, Toto. Chacune ayant une valeur positive.
L’algorithme devra classer les positions des variables par ordre croissant.
Avec Max() et Min() , j’obtiens les positions extrêmes. Je bute sur l’identification des 2 variables intermédiaires pour pouvoir leur affecter leur positionnement.
Merci.08/21/2019 at 1:24 PM #105195En effet sans un tableau c’est compliqué de trier des valeurs contenus dans des variables.
Tu as de la chance si tu en as que 4 à trier cependant 😉
Puisque tu connais déjà le premier et le dernier grâce à MIN et MAX, tu peux facilement trier ceux intermédiaire en testant si leurs valeurs est différentes des premiers et derniers.
Admettons que tata et toto soient les premiers et derniers, alors tu testes simplement si tete > titi et tete <> tata et tete <> toto. Si la réponse est vrai, alors tete est la deuxième valeur du tri.
08/23/2019 at 4:17 PM #10540608/23/2019 at 4:59 PM #10541008/28/2019 at 11:58 AM #105722Pour le fun, j’ai tenté l’exercice avec 6 variables, avec comme contrainte dans l’esprit de la requête: que des if, pas de boucle for ni de boucle while
Si on comparait tout à la fois à coups de if imbriqués ça donnerait une usine à gaz, mais si on fait un peu de tri dans des variables intermédiaires, si je me suis pas trompé, c’est pas aussi long qu’on pourrait le craindre:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081//// Trier 6 variables avec uniquement des if, pas de boucle for to, ni de while do// Noobywan 2019.08.28 pour ProRealCode//// Les 6 variables désordonnées de départ sont a1 à a6a1=3a2=2.35a3=4.5a4=7a5=-1a6=0b1=min(a1,min(a2,min(a3,min(a4,min(a5,a6)))))b2=a2b3=a3b4=a4b5=a5b6=a6if a2=b1 thenb2=a1elsif a3=b1 thenb3=a1elsif a4=b1 thenb4=a1elsif a5=b1 thenb5=a1elsif a6=b1 thenb6=a1endifc2=min(b2,min(b3,min(b4,min(b5,b6))))c3=b3c4=b4c5=b5c6=b6if b3=c2 thenc3=b2elsif b4=c2 thenc4=b2elsif b5=c2 thenc5=b2elsif b6=c2 thenc6=b2endifd3=min(c3,min(c4,min(c5,c6)))d4=c4d5=c5d6=c6if c4=d3 thend4=c3elsif c5=d3 thend5=c3elsif c6=d3 thend6=c3endife4=min(d4,min(d5,d6))e5=d5e6=d6if d5=e4 thene5=d4elsif d6=e4 thene6=d4endiff5=min(e5,e6)f6=e6if e6=f5 thenf6=e5endif// Les 6 variables d'arrivée dans l'ordre croissant sont b1, c2, d3, e4, f5, f6return b1 as "1er", c2 as "2e", d3 as "3e", e4 as "4e", f5 as "5e", f6 as "6e"1 user thanked author for this post.
08/29/2019 at 10:29 AM #10581208/29/2019 at 1:43 PM #105833Trie1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192En m'inspirant de l'approche de Noobywan.Rem Trier 6 variables avec uniquement des if, pas de boucle for to, ni de while doRem Les 6 variables désordonnées de départ sont a1 à a6a1=3a2=2.35a3=4.5a4=7a5=-1a6=0Rem 1° positionRem ¯¯¯¯¯¯¯¯¯¯¯b1=min(a1,min(a2,min(a3,min(a4,min(a5,a6)))))Rem 6° positionRem ¯¯¯¯¯¯¯¯¯¯¯c1=max(a1,max(a2,max(a3,max(a4,max(a5,a6)))))Rem Swapif c1=a1 thena1=b1elsif c1=a2 thena2=b1elsif c1=a3 thena3=b1elsif c1=a4 thena4=b1elsif c1=a5 thena5=b1elsif c1=a6 thena6=b1endifRem 5° positionRem ¯¯¯¯¯¯¯¯¯¯¯d1=max(a1,max(a2,max(a3,max(a4,max(a5,a6)))))Rem Swapif d1=a1 thena1=b1elsif d1=a2 thena2=b1elsif d1=a3 thena3=b1elsif d1=a4 thena4=b1elsif d1=a5 thena5=b1elsif d1=a6 thena6=b1endifRem 4° positionRem ¯¯¯¯¯¯¯¯¯¯¯e1=max(a1,max(a2,max(a3,max(a4,max(a5,a6)))))Rem Swapif e1=a1 thena1=b1elsif e1=a2 thena2=b1elsif e1=a3 thena3=b1elsif e1=a4 thena4=b1elsif e1=a5 thena5=b1elsif e1=a6 thena6=b1endifRem 3° positionRem ¯¯¯¯¯¯¯¯¯¯¯f1=max(a1,max(a2,max(a3,max(a4,max(a5,a6)))))Rem Swapif f1=a1 thena1=b1elsif f1=a2 thena2=b1elsif f1=a3 thena3=b1elsif f1=a4 thena4=b1elsif f1=a5 thena5=b1elsif f1=a6 thena6=b1endifRem 2° positionRem ¯¯¯¯¯¯¯¯¯¯¯g1=max(a1,max(a2,max(a3,max(a4,max(a5,a6)))))Rem Les 6 variables d'arrivée dans l'ordre croissantreturn b1 as "1°position", g1 as "2°position", f1 as "3°position", e1 as "4°position ", d1 as "5°position", c1 as "6°position"En remerciant Noobywan pour son approche, j’ai pondu une une variante pour le fun aussi 🙂
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on