Cours de programmation séquentielle

La calculatrice

La calculatrice

Buts

Vous avez vu tous ces algorithmes dans le cours d’algorithmique avec le Professeur Albuquerque et moi-même.

Enoncé

Il s’agit de réaliser un programme qui, en deux phases, évalue une expression arithmétique composée de nombres réels et des opérations : +, -, *, /, ^.
La première phase transformera l’expression infixe en une expression postfixe. La seconde phase évaluera l’expression postfixe à l’aide d’une pile. Je rappelle ici pour la seconde fois, que ces deux algorithmes ont été vus aux cours.

Cahier des charges (pas forcément dans cet ordre)

Vous devrez probablement implémenter d’autres fonctions, ne vous limitez pas à ce qui est conseillé ici si vous pensez que c’est nécessaire.

Indications

Pour simplifier la lecture de votre chaîne de caractère infixe, nous allons supposer que les opérandes sont des entiers à un seul chiffre de 0 à 9. Les opérations sont +, -, *, /, ^ et que des parenthèses peuvent être présentes. Nous supposerons également qu’il n’y a pas d’espaces dans la chaîne infixe et que finalement il n’y a pas non plus l’opérateur “négatif” (comme dans le nombre entier -3). La chaîne de caractère ne doit pas être lue à la ligne de commande.

Tests

Dans votre Makefile vous devez créer une cible tests qui exécute tous les tests de vos librairies. N’oubliez donc pas d’en faire!

Pour contrôler la qualité de votre programme, créez une batterie de tests. Vous devez également créer un programme qui illustre le fonctionnement de votre calculatrice en utilisant les expressions suivantes par exemple:

./calculator
7+2*3
13
./calculator
8-5-2
1
./calculator
(7-5)/(2-(1-9)^(2^3))
-0.00000011921
./calculator
2/(7-3*2)
2
./calculator
3*(5-(7-1)*3)/2
-19.5
./calculator 
5^(3/2)+(5)^(2/3)
14.10