coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 2013
-
29 déc. 2002 à 16:34
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 2013
-
29 déc. 2002 à 18:31
Hello.
Je cherche a faire un prog qui calcule des ptits trucs dans le style 2.5+4.6*3-2*3. Il faut qu'il respecte l'ordre des ops.
Je ne sais pas comment m'y prendre...
J'ai essayé en stockant le calcul dan sun char[] et en travaillant avec la recherche de caractères mais c'est beaucoup trop lent et impossible à mettre en oeuvre avec plus d'op (sqrt, ^, sin, !, ...). Quelqu'un aurait une petite piste... Juste pour le début. Merci bcp!
coockiesch
cyrianox
Messages postés17Date d'inscriptionsamedi 9 février 2002StatutMembreDernière intervention 8 avril 2005 29 déc. 2002 à 17:08
Ce dont tu parles s'appelle un interpréteur d'expressions.
Pour le faire marcher il te faut :
une classe parser qui reconnait dans une expression les lettres, les symboles "/ * ( ) + -", puis traite de manière récursive les éléments.
ex : 3 * ( 1 + 4)
les parenthèses sont comptées comme un élément évalué récursivement.
tu as donc à évaluer :
1 + 4
opérateur '+', donc on additione 1 et 4
on remonte d'un cran :
3 * resultat , soit : 3 * 5
c'est une multiplication, donc on retourne 15
l'ordre de recherche pour le parser (du 1er au dernier element) :
+ - (unaire)
^
* / %
+ -
=
Voila j'espère que ça pourra t'aider.
Ces explications sont fournies à partir du livre :
"Référence Complète C++" de H.Schildt chez First Interactive.
Dans le bouquin, le prog dont tu parles est en exemple.