- 前回,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 に追加する.
|