Bien le bonjour !
Je me permets de solliciter votre attention concernant une problèmatique qui a déjà été soulevée me semble-t-il. J’insiste néanmoins afin de trouver auprès de vous une solution et/ou alternative. La prog a cela de captivant : contourner les obstacles. Pour ma part, j’ai usé ma logique sur cette difficulté……
Je m’explique donc :
Je souhaite réaliser une boucle et retenir le resultat ($x) le plus intéressant. L’ennui est que je n’arrive pas à “mémoriser” le résultat précédent afin de pouvoir comparer mes valeurs entre elles ($resultat et $resultatPrecedent) comprises entre i et i+1… J’ai écumé un peu le forum où il est question d’utiliser les array (disponibles à partir de la version 11). Est-il possible en attendant de passer outre ?
Dans mon exemple, je souhaite comparer différents niveaux de fractales et retenir le niveau le plus près de mon seuil ($seuil) sans que ce niveau soit supérieur à $seuil.
Voici mon code :
seuil=1.17178
resultat=0
FOR i=1 TO 5 DO
IF (low[0] <= lowest[((i)*2+1)+0](low[0])[0]) THEN
niveau=low[0]
ENDIF
resultatPrecedent=resultat //Ne fonctionne pas : resultatPrecedent=resultat
PostScriptumPrecedent=PostScriptum //Fonctionne : PostScriptumPrecedent<>PostScriptum
IF niveau<seuil THEN
resultat=seuil-niveau
ELSE
resultat=resultatPrecedent
CONTINUE
ENDIF
PostScriptum=PostScriptum+1
IF ((resultat<resultatPrecedent) AND (resultatPrecedent>0)) OR (resultatPrecedent=0 AND i=1) THEN
x=niveau
boucle=i
ELSE
x=x
boucle=boucle
ENDIF
NEXT
Ce que j’attendrais dans le meilleur des mondes si $seuil=1.17178 :
+ i ++ $niveau ++ x ++ boucle ++ resultat ++ resultatPrecedent +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 ++ 1.17078 ++ 1.17078 ++ 1 ++ 0.00100 ++ 0 +
+ 2 ++ 1.17120 ++ 1.17120 ++ 2 ++ 0.00058 ++ 0.00100 +
+ 3 ++ 1.16500 ++ 1.17120 ++ 2 ++ 0.00058 ++ 0.00058 +
+ 4 ++ 1.17110 ++ 1.17120 ++ 2 ++ 0.00058 ++ 0.00058 +
+ 5 ++ 1.17160 ++ 1.17160 ++ 5 ++ 0.00018 ++ 0.00058 +
++ 0.00018 +
Là où le bât blesse :
$resultatPrecedent me renvoie la même valeur que $resultat[i] au lieu de me renvoyer la valeur de la boucle précédente c-a-d resultat[i-1]…
De ce fait, je n’ai aucun moyen de comparer $resultat et $resultatPrecedent dans la mesure où $resultat est systématiquement et strictement égale à $resultatPrecedent
PS : Je me suis “amusé” à incrémenter une variable ($PostScriptum) et dans ce cas, ça fonctionne : $PostScriptum est différent de $PostScriptumPrecedent et ces valeurs peuvent être comparées…
Merci d’avance de votre aide la communauté ! A u plaisir de vous lire 😉