un exemple de programme 39gII.
Code : Tout sélectionner
//================================
// Le compte est bon - HP39gII
//--------------------------------
// Variables globales
LOp:={" plus "," moins "," fois ", " divisé par "};
Sol; Cible; Ecart;MeilleurCoup,Tirage;
// Génére une liste contenant la meilleure solution
AffSol (n1,Op,n2,n3)
BEGIN
Sol:=CONCAT(Sol, ""+MAX(n1,n2)+LOp(Op)+MIN(n1,n2)+"->"+n3);
END;
// Le coeur du programme
LCB(Tab,Nb)
BEGIN
LOCAL i,j,Op,T1,r:=0;
FOR i FROM 1 TO Nb-1 DO
FOR j FROM i+1 TO Nb DO
FOR Op FROM 1 TO 4 DO
Tab=>T1;
IF Op==1 THEN // To avoid CASE problem
T1(i)+T1(j)=>T1(i);
ELSE
IF Op==2 THEN
ABS(T1(i)-T1(j))=>T1(i);
ELSE
IF Op==3 THEN
T1(i)*T1(j)=>T1(i);
ELSE
IF (T1(j)<>0) AND (T1(i) MOD T1(j)==0) THEN
T1(i)/T1(j)=>T1(i);
ELSE
IF (T1(i)<>0) AND (T1(j) MOD T1(i)==0) THEN
T1(j)/T1(i)=>T1(i);
ELSE
BREAK;
END;
END;
END;
END;
END;
IF T1(i)==Cible THEN AffSol(Tab(i),Op,Tab(j),T1(i)); r:=1; BREAK(3); END; // RETURN(1) don't work
IF ABS(T1(i)-Cible)<Ecart THEN
MeilleurCoup:=T1(i);
Ecart:=ABS(Cible-MeilleurCoup);
END;
T1(Nb)=>T1(j);
IF LCB(T1,Nb-1) THEN AffSol(Tab(i),Op,Tab(j),T1(i)); r:=1; BREAK(3); END;
END;
END;
END;
RETURN r;
END;
// Le programme principal
EXPORT Compte(t,c)
BEGIN
LOCAL n;
Cible:=c;
Ecart:=999;
MeilleurCoup:=0;
Tirage:=t;
Sol:={};
PRINT ("***** LE COMPTE EST BON *****");
PRINT (Tirage);
PRINT ("Nombre à trouver : " + Cible);
PRINT ("");
IF NOT(LCB(Tirage,6)) THEN
PRINT("Solution la plus proche :" + MeilleurCoup);
Cible:=MeilleurCoup;
Ecart:=999;
LCB(Tirage,6)
END;
REVERSE(Sol)=>Sol;
FOR n FROM 1 TO SIZE(Sol) DO
PRINT(" " + Sol(n));
END;
RETURN Sol;
END;
Compte({6,6,25,4,100,9}, 923}
->


Testé sur l'émulateur (en attentant le kit PC). Les temps de réponse vont de qqes secondes à qqes minutes (ce sera forcement plus lent sur la calc)...
Reste quelques bugs sur lesquelles HP bosse (j'ai du virer les CASE, les RETURN sans BREAK, mais le programme en l'état fonctionne parfaitement. Le programme serait plus 'beau' avec des CASE au lieu d'affreux IF imbriqués
Bref machine avec un gros potentiel mais à finaliser
Pour s'entrainer http://www.woodlands-junior.kent.sch.uk ... ntdown.swf





