後置記法(逆ポーランド記法)では,例えば,式Y=(A-B)×CをYAB-C×=と表現する。
次の式を後置記法で表現したものはどれか。
Y=(A+B)×(C-D÷E)
正答2
解説
正解は2です。
中置記法の式を後置記法(逆ポーランド記法)に変換する問題です。
後置記法では、演算子を2つの被演算子の後ろに書きます。
括弧の中や優先度の高い演算から順に変換していきます。
【変換の手順】
A+Bは、AB+になります。
D÷Eは、除算が減算より優先されるので先にDE÷になります。
C−D÷Eは、CとDE÷の差なのでCDE÷−になります。
(A+B)×(C−D÷E)は、AB+とCDE÷−の積なのでAB+CDE÷−×です。
最後に代入を付けて、YAB+CDE÷−×=になります。
【選択肢別解説】
1:× スタックでたどると、(A+B)からCを引き、その結果にD÷Eを掛ける式になります。
つまりY=((A+B)−C)×(D÷E)を表しており、元の式と異なります。
2:○ 手順どおりに変換した結果と一致します。
AB+で和を作り、CDE÷−で右の括弧を作り、×で掛け合わせています。
3:× EDC÷−はE−D÷Cを表します。
減算と除算の被演算子の順序が逆になっているため誤りです。
4:× CD−E÷は(C−D)÷Eを表します。
減算を先に行っていて除算の優先順位が守られていないため誤りです。
【ポイント】
後置記法はスタックを使って左から1回走査するだけで計算できます。
被演算子が来たら積み、演算子が来たら上の2つを取り出して計算します。
この方法で各選択肢を逆にたどると、どの式を表すかを確かめられます。