Vous devez écrire un programme qui évalue une chaîne qui serait entrée dans une calculatrice avancée.
Le programme doit accepter la saisie à l'aide de stdin et produire la bonne réponse. Pour les langues qui n'ont pas de fonctions pour accepter stdin, vous pouvez assumer les fonctions readLine
et print
gérer ces tâches.
Exigences:
- N'utilise aucun type de fonctions "eval"
- Peut gérer les nombres à virgule flottante et négatifs
- Prend en charge au moins les opérateurs +, -, *, / et ^
- Prend en charge les crochets et les parenthèses pour remplacer l'ordre normal
- Peut gérer une entrée contenant un ou plusieurs espaces entre les opérateurs et les nombres
- Évalue l'entrée en utilisant l' ordre standard des opérations
Cas de test
Contribution
10 - 3 + 2
Sortie
9
Contribution
8 + 6 / 3 - 7 + -5 / 2.5
Sortie
1
Contribution
4 + [ ( -3 + 5 ) * 3.5 ] ^ 2 - 12
Sortie
41
.0
à la fin s'ils sont des entiers? Aussi: quelle doit être la précision de la calculatrice (en ce qui concerne la précision en virgule flottante et autres)?.0
à la fin. Je ne suis pas trop sûr de la précision, mais plus c'est mieux.Réponses:
C ++,
640583Dentelé
Mon premier golf de code, donc avec impatience les commentaires et les critiques!
la source
using namespace std
et une fonction principale n'est pas vraiment ok, n'est-ce pas?PHP -
394354312 caractèresDentelé:
la source
Postscript, 446
Cela utilise l'algorithme de triage.
Non golfé et commenté:
TODO : Associativité à droite de l'exponentation
la source
Python 2 ,
339335 octetsEssayez-le en ligne!
la source
Postscript,
1000695665494J'ai volé des idées à ThomasW.
Fonctionnalité ajoutée: accepte les chaînes avec ou sans espaces autour des opérateurs.[fonctionnalité supprimée]L'utilisation
ARGUMENTS
est plus courte%stdin
et plus facile à tester pour démarrer!Simplification de la substitution pour remplacer simplement les parenthèses par des parenthèses.
Code:
Non golfé et commenté:
la source