Salut.
Je veux savoir le code necessaire pour donner la valeur numérique d'une formule mathématique de type string ou char*, ou les seuls opérateurs trouvés sont + - * /. Exemple: 8/7+(74+1)*7-(5*7)/18.
Merci.
Version imprimable
Salut.
Je veux savoir le code necessaire pour donner la valeur numérique d'une formule mathématique de type string ou char*, ou les seuls opérateurs trouvés sont + - * /. Exemple: 8/7+(74+1)*7-(5*7)/18.
Merci.
Boost.Spirit: y a un exemple tout fait qui fait ça tres bien.
vous pouvez me donnez un lien svp? merci
Salut, et bienvenue sur le forum.
Le principe est de créer un "parser" qui va créer un "arbre binaire logique" représentant l'expression à évaluer.
Les noeuds reprennent les différents opérateur, et les feulles reprennent les opérandes gauche et droite.
Une fois l'arbre binaire créer, il devient alors "facile" de calculer le résultat ;)
Il peut être sympa de s'amuser à créer un tel parseur, pour "la culture générale", et nous t'y aiderons si tu le souhaite, mais il faut avouer que c'est quand même se faire du mal pour pas grand chose car il existe une bibliothèque qui nous permet de générer des parsers très facilement: boost.tokenizer :D
EDIT grillé... le temps de sortir mon emmerdeuse :aie:
merci bien pour les infos. je veux bien créer moi meme cet arbre binaire, mais je crois que j'aurai besoin d'aide, donc si vous pouvez, donnez moi un exemple ou un tutrial sur ce type d'evaluation numerique.
http://www.boost.org/doc/libs/1_43_0...alc6/calc6.cpp
en 10s sous google ...
j'ai pas l'authorisation d'utiliser la bibliotheque boost dans mon projet. J'aime bien si quelqu'un me dit comment construire mon arbre binaire pour evaluer la formule. merci une autre fois.
merci
Salut.
J'ai vu aujourdhui la solution proposée par monsieur Jean-Marc sur l'interpreteur d'expression mathematique (http://www.developpez.net/forums/d38...mathematiques/), et je l'ai apprécié beaucoup. Sauf que je veux bien savoir comment peut-on amélliorer le code pour interpreter une telle expression: [2,8]+4-10*[4,8] ou [2,8] designe les coordonnées d'une cellule d'un tableau qu'on a deja rempli.
Merci bien pour votre aide.
Modifie eval_factor pour traiter ta syntaxe [].
(Et ne pose pas de questions techniques par MP, et ne pose pas la même question sur deux fils)
je suis désolé, mais je suis nouveau dans le forum et je ne sais pas encore tous les reglements. en tout cas, j'ai fait ce que vous m'avez dit, mais j'ai pas reussi. :(
enfn, j'ai reussi!:) l faut aussi definir l'operateur "," avec * et /. En tt cas, merci beaucoup pour votre aide.:ccool:
a bientot.