システムプログラム'01 演習問題(2)
その 1
例題:
演算子順位法による構文解析
のプログラムをコンパイルして実行してみてください。 これは、1+2*3のような入力を受け取って、その答を計算するプログラムです。 そしてこの例題を参考にして、次の問題をやってください。
(難易度 A)引き算(
-
)と割り算(
/
)にも対応した計算プログラムを作成せよ。(単項演算子の
-
は考慮しなくて良い。)
(難易度 B)1. に加えて、さらに累乗の演算子(
^
)にも対応した計算プログラムを作成せよ。
ただし
^
は右結合(例えば
2^2^3
は、
2^(2^3)
、つまり 256のこと)で、
*
や
/
よりも、優先順位が高いものとする。
(ちなみに
^
で累乗の演算子を表わすのは、Fortranなどの記法で、 C言語では、
^
は累乗を計算する演算子
ではない。
xの y乗を計算する Cの関数は
double pow(double x, double y)
である。 この関数を使うには
#include <math.h>
が必要である。)
これで物足りない人は
(難易度 B)入力された通常の記法の算術式の、 逆ポーランド記法を出力するプログラムを作成せよ。
もやってください。
システムプログラムのホームページ
Koji Kagawa (
kagawa@eng.?????
)