電卓シミュレータ

-演算子の優先順位を考慮して数式を計算するには-
中置記法の式を逆ポーランド記法(後置記法)に変換後,計算を行う。

電卓シミュレータのダウンロード(2004.11.19)

画面のイメージ 1.計算式の入力  2.逆ポーランド記法に変換  3.計算

[1] 中置記法から逆ポーランド記法への変換アルゴリズム 1) 式eからtokenを取り出す 2) すべてのトークンを処理し終えたら スタックに残ったすべての演算子をキューに入れ,キューを返す(終了) 3) tokenが数字のとき tokenをキューに入れ,式の残りを再帰的に処理 4) (tokenが演算子で) 4-a) スタックが空なら tokenをスタックに積んで,式の残りを再帰的に処理 4-b) token(演算子)の優先度 > スタックトップの演算子の優先度 なら tokenをスタックに積んで,式の残りを再帰的に処理 4-c) いずれでもなければ( tokenの優先度 ≦ スタックトップの演算子の優先度 ) スタックトップを取り出してキューに入れ,4)に戻る.
演算子優先度
+1
-1
*2
/2
**(べき乗)3

[2] 逆ポーランド記法の式の計算アルゴリズム

  1) キューからtokenを取り出す
  2) 全てのトークンを処理し終えたら
      スタックトップを取り出し返す(終了)
  3) tokenが数字のとき
      tokenをスタックに積み,キューの残りを再帰的に処理
  4) (tokenが演算子のとき)
      スタックトップを取り出し,arg2にセット
      スタックトップを取り出し,arg1にセット
      [arg1 token arg2] を計算し,結果をスタックに積む.
      キューの残りを再帰的に処理;

香川高等専門学校(詫間キャンパス)情報工学科 宮武明義