プログラミングU 第18回

数式の記法 2


前回,3つの記法(前置,中置,後置)を学びました.
中置記法は,括弧を省略しない形でも(省略を許すとなおさら)入力ルーチンも出力ルーチンも複雑です.
出力ルーチンは,前置記法後置記法も単純です.
入力ルーチンが単純にできるのは前置記法です.
前置記法の ShikiToTree では,部分式を取り出すときに,Shiki[Nth] が演算子か変数かで場合分けします.
演算子のときは,後に前置式が2つ続いているので,それを取り出します.
課題 Tree3
Tree2 の ShikiToTree を前置記法の式を変換するように変更する.
提出期限 6月23日18時15分

後置記法の式は値を計算するのに便利です. 演算子を見たら前の2つの値にその演算を適用するので,値だけを記憶して演算子を記憶する必要がありません.
課題 KouchiKeisan
後置記法の式を読んで,その値を計算する.計算途中も書く.
実行例
         後置記法の式を入れてください
         ただし定数は1桁の数,演算子は +-*/ とします
          例  123--45*-678*-9/*

         式 (0 を入れると終わります) ? 123--45*-678*-9/*

         1   1.000
         2   1.000   2.000
         3   1.000   2.000   3.000
         -   1.000  -1.000
         -   2.000
         4   2.000   4.000
         5   2.000   4.000   5.000
         *   2.000  20.000
         - -18.000
         6 -18.000   6.000
         7 -18.000   6.000   7.000
         8 -18.000   6.000   7.000   8.000
         * -18.000   6.000  56.000
         - -18.000 -50.000
         9 -18.000 -50.000   9.000
         / -18.000  -5.556
         * 100.000

         123--45*-678*-9/* = 100.000

         式 (0 を入れると終わります) ?
       
提出期限 6月26日18時15分
ヒント
Shiki[Nth] が数字 '0'..'9' のとき,対応する数値 0..9 を配列 Memory に追加する.
数字を数値に変換するのは Ord(Shiki[Nth])-Ord('0') とする.
Shiki[Nth] が演算子 '+','-','*','/' のとき,Memory から2つ数値を取り出して, 演算子に応じて計算し,結果を Memory に追加する.