Ah oui, une dernière chose : Comme on a le Contient maintenant, je n'ai plus besoin du bOK, du coup, voici la totale :
TestAjouteItération(0,0) //1
TestAjouteItération(1,1) //2
TestAjouteItération(2,2) //3
TestAjouteItération("1+1",2) //4
TestAjouteItération("1+2",3) //5
TestAjouteItération("2+2",4) //6
TestAjouteItération("2x3",6) //7
TestAjouteItération("3x3",9) //8
TestAjouteItération("10/2",5) //9
TestAjouteItération("1+1+1",3) //10
TestAjouteItération("1+1+2",4) //11
TestAjouteItération("10+11+12",33) //12
TestAjouteItération("2+3x6",20) //13
TestAjouteItération("2*3+6",12) //14
TestAjouteItération("5-3",2) //15
TestAjouteItération("5-5",0) //16
TestAjouteItération("2*3-5",1) //17
TestAjouteItération("1+2+3+4",10) //18
TestAjouteItération("5-6",-1) //19
TestAjouteItération("5-6*2",-7) //20
TestAjouteItération("10-5-5",0) //21
TestAjouteItération("(0)",0) //22
TestAjouteItération("(1)",1) //23
TestAjouteItération("(10)",10) //24
TestAjouteItération("(1+1)",2) //25
TestAjouteItération("(1)+1",2) //26
TestAjouteItération("(1)+(1)",2) //27
TestAjouteItération("(1+1)+(1+1)",4) //28
TestAjouteItération("(2+3)*(4+6)",50) //29
TestAjouteItération("5.2+3.8",9) //30
TestAjouteItération("1.234*5.6789",7.0077626) //31
TestAjouteItération("3x6x2",36) //32
TestAjouteItération("12x9*8",864) //33
TestAjouteItération("56/8/2",3.5) //34
TestAjouteItération("24/6*2",8) //35
TestAjouteItération("24x6/2",72) //36
PROCÉDURE MonScénario(sEntrée est une chaîne, rSortie est un réel)
TestVérifieEgalité(Résultat(sEntrée),rSortie)
PROCÉDURE Résultat(sEntrée)
TANTQUE Contient(sEntrée,"(")
sEntrée = EnlèveParenthèses(sEntrée)
FIN
tabOpérateurs est un tableau de chaîne = ["+","-","x","*","/"]
POUR TOUT sOpérateur DE tabOpérateurs
SI Contient(sEntrée,sOpérateur) ALORS
nPositionOpérateur est un entier = Position(sEntrée,sOpérateur,0,DepuisFin)
rOpérandeGauche est un réel = Résultat(sEntrée[[1 À nPositionOpérateur-1]])
rOpérandeDroit est un réel = Résultat(sEntrée[[nPositionOpérateur+1 À ]])
SELON sOpérateur
CAS "+"
RENVOYER rOpérandeGauche + rOpérandeDroit
CAS "-"
RENVOYER rOpérandeGauche - rOpérandeDroit
CAS "x","*"
RENVOYER rOpérandeGauche * rOpérandeDroit
CAS "/"
RENVOYER rOpérandeGauche / rOpérandeDroit
FIN
FIN
FIN
RENVOYER = Val(sEntrée)
PROCÉDURE EnlèveParenthèses(sEntrée est une chaîne)
nPositionDébutParenthèse est un entier = Position(sEntrée,"(")
nPositionFinParenthèse est un entier = Position(sEntrée,")")
RENVOYER sEntrée[[1 À nPositionDébutParenthèse-1]]+Résultat(sEntrée[[nPositionDébutParenthèse+1 À nPositionFinParenthèse-1]])+sEntrée[[nPositionFinParenthèse+1 À ]]
Qu'en penses-tu ?