ITの基礎知識|ITパスポート・基本情報

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

2017.09.14

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

  • ア:  -12
  • イ:  2
  • ウ:  12
  • エ:  14

Show answer

正解:ウ

解説

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

具体的には、以下の手順で式を通常の表記法に戻して計算する。

  1. “A”をスタックに入れる [A]
  2. “B”をスタックに入れる
  3. “+”がきたら、スタックから“B”を取り出し、“+”の右にセット。
    スタックから“A”を取り出し、“+”の左にセット。
    結果の“A+B”をスタックに入れる。
  4. “C”をスタックに入れる
  5. “D”をスタックに入れる
  6. “E”をスタックに入れる
  7. “/”がきたら、スタックから“E”を取り出し、“/”の右にセット。
    スタックから“D”を取り出し、“/”の左にセット。
    結果の“D/E”をスタックに入れる。
  8. “-”がきたら、スタックから“D/E”を取り出し、“-”の右にセット。
    スタックから“C”を取り出し、“-”の左にセット。
    結果の“C-(D/E)”をスタックに入れる。
  9. “*”がきたら、スタックから“C-(D/E)”を取り出し、“*”の右にセット。
    スタックから“A+B”を取り出し、“*”の左にセット。
    結果は“(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