Aller au contenu principal
U/
Parsing
polyglotte

Évaluer une expression arithmétique avec parenthèses

Implémenter un évaluateur d'expressions arithmétiques entières supportant +, -, *, /, les parenthèses et la priorité des opérateurs, sans utiliser eval() ni bibliothèque de parsing.

90 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

É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
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.