この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ア

解説

逆ポーランド表記法(後置記法)の式 ABCD-×+ を評価します。スタックを使って左から右へ処理します。A=16、B=8、C=4、D=2。①A をスタックへ:[16]。②B をスタックへ:[16, 8]。③C をスタックへ:[16, 8, 4]。④D をスタックへ:[16, 8, 4, 2]。⑤「-」:C-D = 4-2 = 2、スタック:[16, 8, 2]。⑥「×」:B×(C-D) = 8×2 = 16、スタック:[16, 16]。⑦「+」:A+(B×(C-D)) = 16+16 = 32、スタック:[32]。最終結果は 32 となり、選択肢 a が正解です。中置記法に直すと A+(B×(C-D)) = 16+(8×(4-2)) = 16+(8×2) = 16+16 = 32 です。

なぜ他の選択肢は違うのか

選択肢 イ
46 は演算子の適用順序を誤った場合の誤答です。「-」の前に「×」を先に適用してしまうと異なる結果になります。逆ポーランド表記法は演算子が出現した時点で直前の2オペランドに適用するルールを守る必要があります。
選択肢 ウ
48 は何らかの演算ミスの誤答です。例えば C-D を 4-2=2 ではなく別の値で計算した場合などです。スタックのトレースを丁寧に行えば防げます。
選択肢 エ
94 は演算子の適用を大きく誤った場合(例:加算と乗算の順序を逆にするなど)の誤答です。逆ポーランド記法のスタック処理の基本手順が必要です。

解くときのポイント

逆ポーランド記法の処理:数値→スタックに積む、演算子→スタックから2つ取り出して計算しスタックに積む。演算子は「後に来た方が先に処理される」。中置記法に直してから計算する方が間違えにくい場合もある。