EVALUATION RÉCURSIVE D'UNE EXPRESSION SOUS FORME DE CHAÎNE

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 - 30 juin 2003 à 13:20
yassirone Messages postés 2 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 6 janvier 2011 - 5 janv. 2011 à 18:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7713-evaluation-recursive-d-une-expression-sous-forme-de-chaine

yassirone Messages postés 2 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 6 janvier 2011
5 janv. 2011 à 18:20
Bonjour,

Merci pour l'effort
Stp je voulais te demander si avec le meme algorithme
je pourrai avoir le meme résultat sous java
si c'est le cas est ce que ça vous dérange de me passer l'algo
parce ce que je maitrise pas l VB

merci d'avance
willow07rosenberg Messages postés 15 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 17 août 2004
8 déc. 2004 à 11:43
Merci pour ce code !!! Pour mes besoins il est super !!! Juste peut-être une modification pour le problème de 45/5/3 :
modifier la ligne p = InStr(a$, "/")
en p = InStrRev(a$, "/")
dans la fonction a_EvalString...

9/10
olivier6530 Messages postés 5 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 25 juillet 2003
25 juil. 2003 à 11:19
Bonjour cartvb.
Je suis d'accord pour la priorité gauche - droite mais pour le reste ...
exp(45) = 3,49 E+19 , et log(exp(45)) donne bien 45.
Le problème vient du fait que j'ai utilisé VAL dans la fonction au lieu de CDBL pour que la fonction tienne compte des paramètre régionaux comme expliquer par rené juste avant toi.
carlvb Messages postés 199 Date d'inscription mercredi 23 avril 2003 Statut Contributeur Dernière intervention 25 mai 2017 11
25 juil. 2003 à 11:07
réctification : 45/5/3=3 et non 1 (je m'en excuse)
carlvb Messages postés 199 Date d'inscription mercredi 23 avril 2003 Statut Contributeur Dernière intervention 25 mai 2017 11
25 juil. 2003 à 11:03
salut 0livier,
ta source est très interressante et je trouve que tu as de très bonnes idées.
Mais, ton évaluateur a le même problème que mon ancien évaluateur (n°8750) liée à l'ordre de calcul pour les opérateurs de même priorité. Tu le fais de droite à gauche au lieu de gauche à droite ce qui cause quelques surprises.
exemples : 5-4-1 donne 2 (au lieu de 0) car il est interprété comme 5-(4-1)
45/5/3 donne 27,0000006437302 (au lieu de 1)
un autre problème (plus délirant) exp(45) donne ...22 et ainsi log(exp(45)) donne 3 au lieu de 45
là tu dois te poser des questions.
allez 7/10 (Mention bien)
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 juil. 2003 à 00:43
Rectification : pas "très bien" mais presque parfait après les explications d'Olivier : paramètres régionaux de Windows :
Séparateur décimal : le point
Séparateur de milliers : espace
Séparateur de liste : la virgule
Encore bravo.
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
16 juil. 2003 à 15:42
Très bien, mais pourquoi s'obstine-t-il à m'affirmer que
a_EvalString("exp(1)") = 2 au lieu de 2.718....
a_EvalString("cos(n'importe quoi) = 0 ?
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
3 juil. 2003 à 09:33
Desolé j'ai pas encore eu le temp de regarder ton code de plus pres...
je le fait des que possible

@ bientot
olivier6530 Messages postés 5 Date d'inscription jeudi 26 juin 2003 Statut Membre Dernière intervention 25 juillet 2003
3 juil. 2003 à 09:18
Merci à EBartSoft. J'ai mis à jour le code pour le traîtment des erreurs.
Les fonctions mathématiques de base sont interprétée.
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
30 juin 2003 à 13:20
C'est pas mal du tout ... tu m'as bleuffé j'y croyais pas au debut
mais ça marche assez bien. bon j'ai vue a_EvalString("1(2)") qui
ne marche pas et qlq details a pauffiner mais c'est cool !

:-D

9/10

b@nne prog
Rejoignez-nous