From 92402c7ec603412e36c60bf79d956e8368e5c4cd Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Tue, 23 Nov 2021 12:32:55 +0100 Subject: [PATCH] added in->post --- slides/cours_8.md | 55 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/slides/cours_8.md b/slides/cours_8.md index 61989a0..00d38d0 100644 --- a/slides/cours_8.md +++ b/slides/cours_8.md @@ -655,9 +655,60 @@ Caractère lu Pile opérandes * On lit l'expression infixe de gauche à droite. -1. On examine le prochain caractère de l'expression infixe. +* On examine le prochain caractère de l'expression infixe. * Si opérande, le placer dans l'expression du résultat. * Si parenthèse le mettre dans la pile (priorité 0). * Si opérateur, comparer sa priorité avec celui du sommet de la pile: * Si sa priorité est plus élevée, empiler. - * Sinon + * Sinon dépiler l'opérateur de la pile dans l'expression du résultat et + recommencer jusqu'à apparition d'un opérateur de priorité plus faible + au sommet de la pile (ou pile vide). + * Si parenthèse fermée, dépiler les opérateurs du sommet de la pile et les + placer dans l'expression du résultat, jusqu'à ce qu'une parenthèse + ouverte apparaisse au sommet, dépiler également la parenthèse. + * Si il n'y a pas de caractère dans l'expression dépiler tous les + opérateurs dans le résultat. + +# La calculatrice (6/N) + +## De infixe à post-fixe: exemple + +```C +Infixe Postfixe Pile Priorité +((A*B)/D-F)/(G+H) Vide Vide Néant + (A*B)/D-F)/(G+H) Vide ( 0 + A*B)/D-F)/(G+H) Vide (( 0 + *B)/D-F)/(G+H) A (( 0 + B)/D-F)/(G+H) A ((* 2 + )/D-F)/(G+H) AB ((* 2 + /D-F)/(G+H) AB* ( 0 + D-F)/(G+H) AB* (/ 2 + -F)/(G+H) AB*D (/ 2 + F)/(G+H) AB*D/ (- 1 + )/(G+H) AB*D/F (- 1 + /(G+H) AB*D/F- Vide Néant +``` + +# La calculatrice (7/N) + +## De infixe à post-fixe: exemple + +```C +Infixe Postfixe Pile Priorité +((A*B)/D-F)/(G+H) Vide Vide Néant +-------------------------------------------------------- + /(G+H) AB*D/F- Vide Néant + (G+H) AB*D/F- / 2 + G+H) AB*D/F- /( 0 + +H) AB*D/F-G /( 0 + H) AB*D/F-G /(+ 1 + ) AB*D/F-GH /(+ 1 + Vide AB*D/F-GH+ / 2 + Vide AB*D/F-GH+/ Vide Néant +``` + +# La calculatrice (8/N) + +## Exercice: écrire le code et le poster sur matrix + +. . . -- GitLab