基本情報技術者試験「逆ポーランド記法」の問題
逆ポーランド記法で「5 3 - 4 *」と表された式を評価した結果はいくつか。
ア計算結果-8
イ17
ウ23
エ値は8
正解
エ.値は8
逆ポーランド記法はオペランドをスタックに積み、演算子で直前2つを取り出す。5,3を積み-で5-3=2、2,4を積み*で2×4=8となり正しい。
?選択肢ごとの解説
ア ×計算結果-8は5-3を3-5=-2と引く順序を逆にし-2×4=-8とした誤りである。
イ ×17は中置記法と取り違え5-3×4=5-12を符号処理し誤った値を導いている。
ウ ×23は(5+3)×?など演算子を取り違えたり積む順序を誤った計算ミスに相当する。
エ ○逆ポーランド記法はオペランドをスタックに積み、演算子で直前2つを取り出す。5,3を積み-で5-3=2、2,4を積み*で2×4=8となり正しい。
✎くわしく
逆ポーランド記法(後置記法)は括弧が不要で、演算子を見るたびスタック上位2要素に適用すればよい。引き算や割り算は順序が結果を変えるため、下から2番目を左オペランドとする規則を守ることが要点である。
✓本番での押さえどころ
試験のコツ
トークンを左から読み、数はスタックへ、演算子は『下の値 演算子 上の値』で計算すると順序を誤らない。
覚え方
逆ポーランドは『二つ積んで演算子で潰す』を繰り返すだけ、とスタック動作で覚える。
よくある誤り
減算・除算でオペランドの順序を逆にする、または中置記法のつもりで読む誤りが頻出する。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008,…次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1…次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10,…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…スタックに対する push(積む)と…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0029