include <iostream>
usingnamespacestd;
//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. inteval(char e[])
{
int i = 0;
return evalAux(e, i);
}
intmain(){
char e[100];
cin >> e;
cout << eval(e) << endl;
return0 ;
}