Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
include <iostream> using namespace std; //Retourne la valeur de la sous-expression de la chaîne e //commençant à la position i. Au retour de la fonction, i //est la position du caractère qui suit la sous-expression //évaluée. int evalAux(char e[], int &i) { //Si le premier caractère est '('. //La sous-expression est donc une somme, //une différence, ... if (e[i] == '(') { i++; //On passe la parenthèse. int valOpGche = evalAux(e, i); //Valeur de l'opérande gauche. char op = e[i]; //Récupération de l'opérateur. i++; //On passe l'opérateur. int valOpDt = evalAux(e, i); //Valeur de l'opérande droit. i++; //On passe la parenthèse fermante. switch (op) { case '+': return valOpGche + valOpDt; case '-': return valOpGche - valOpDt; case '*': return valOpGche * valOpDt; default: return valOpGche / valOpDt; } } else //e[i] != '(', donc la sous-expression est un nombre. { int val = 0; for (; e[i] >= '0' && e[i] <= '9'; i++) val = 10 * val + e[i] - '0'; return val; } } //Evalue l'expression donnée dans la chaîne e. int eval(char e[]) { int i = 0; return evalAux(e, i); } int main(){ char e[100]; cin >> e; cout << eval(e) << endl; return 0 ; }
This paste will be private.
From the Design Piracy series on my blog: