Défi
Énoncé
Le programme lit une expression arithmétique sur une ligne et affiche sa valeur entière. L'expression contient des entiers positifs, les opérateurs +, -, *, / (division entière tronquée vers zéro), et des parenthèses. La priorité des opérateurs est standard : * et / avant + et -. L'utilisation de eval() ou d'une bibliothèque de parsing externe est interdite ; implémenter un parseur par descente récursive ou l'algorithme Shunting-Yard.
Contraintes
- L'expression est garantie syntaxiquement correcte.
- Les entiers de l'expression sont positifs et tiennent dans un entier 32 bits signé.
- Le résultat tient dans un entier 64 bits signé.
- La division par zéro ne sera pas testée.
- Pas d'espaces dans l'expression d'entrée.
- Solution réalisable dans tout langage généraliste avec sa seule bibliothèque standard.
Exemple
Entrée : (1+2)*3-4
Sortie : 5
Entrée : 10+2*6
Sortie : 22