平成21年 秋期 基本情報技術者 午前 問3

逆ポーランド表記法(後置表記法)で、“EF-G÷CD-AB+÷+”と表現される式はどれか。

 ア  ((A+B)+(C-D))÷G-(E÷F)
 イ  (A+B)÷(C-D))+G÷(E-F)
 ウ  ((E-F)÷G)+((C-D)÷(A+B))
 エ  ((E-F)÷G)÷((C-D)+(A+B))


答え ウ


解説
逆ポーランド表記法から通常の表記法(中置記法)に変換するにはスタックを用いて、変数はスタックにセットし、算術記号がきたらスタックから変数を2つ取り出し、算術記号の前後にセットするので、“EF-G÷CD-AB+÷+”の場合は、[ ]をスタックの状態とすると

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


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

キーワードの解説

戻る 一覧へ 次へ