平成22年 春期 基本情報技術者 午前 問3

A = 1、B = 3、C = 5、D = 4、E = 2 のとき、逆ポーランド表記法で表現された式 AB+CDE/-* の演算結果はどれか。

 ア  -12
 イ  2
 ウ  12
 エ  14


答え ウ


解説
逆ポーランド表記法で表現された式 AB+CDE/-* を通常の表記法(中置記法)にするにはスタックを用いて、変数はスタックにセットし、算術記号がきたらスタックから変数を2つ取り出し、算術記号の前後にセットするので、[ ]をスタックの状態とすると

  1. “A”をスタックに入れる [A]
  2. “B”をスタックに入れる [B, A]
  3. “+”がきたら
    1. スタックから“B”を取り出し、“+”の右にセット [A]
    2. スタックから“A”を取り出し、“+”の左にセット [ ]
    3. 結果の“A+B”をスタックに入れる [A+B]
  4. “C”をスタックに入れる [C, A+B]
  5. “D”をスタックに入れる [D, C, A+B]
  6. “E”をスタックに入れる [E, D, C, A+B]
  7. “/”がきたら
    1. スタックから“E”を取り出し、“/”の右にセット [D, C, A+B]
    2. スタックから“D”を取り出し、“/”の左にセット [C, A+B]
    3. 結果の“D/E”をスタックに入れる [D/E, C, A+B]
  8. “-”がきたら
    1. スタックから“D/E”を取り出し、“-”の右にセット [C, A+B]
    2. スタックから“C”を取り出し、“-”の左にセット [A+B]
    3. 結果の“C-(D/E)”をスタックに入れる [C-(D/E), A+B]
  9. “*”がきたら
    1. スタックから“C-(D/E)”を取り出し、“*”の右にセット [A+B]
    2. スタックから“A+B”を取り出し、“*”の左にセット [ ]
    3. 結果は“(A+B)*(C-(D/E))”になる。
(A+B)*(C-(D/E)) に A = 1、B = 3、C = 5、D = 4、E = 2 を代入すると
 (A+B)*(C-(D/E)) = (1+3)*(5-(4/2)) = 12
(ウ)になる。


キーワード
・逆ポーランド表記法

キーワードの解説

戻る 一覧へ 次へ