令和4年度 問79
アルゴリズムとプログラミング
流れ図に関する問題
流れ図で示す処理を終了したとき,xの値はどれか。
〔流れ図〕(JIS の流れ図記号で描かれた図)
開始 ↓ x を98とする ↓ y を42とする ↓ ┌─ 繰返し(ループ端の条件: x = y )(注) │ ↓ │ < x : y > ── ≦ ──▶ y - x の計算結果を新たなyとする ─┐ │ │ > │ │ ▼ │ │ x - y の計算結果を新たなxとする │ │ ↓◀────────────────────────────────────────────────────┘ └─ 繰返し ↓ 終了 (注)ループ端の条件は,終了条件を示す。
- ア0
- イ14
- ウ28
- エ56
答えと解説を見る
✓ これが正解イ14
解説
98と42を引き算でそろえていくと、どちらも14になります。
この流れ図は、二つの変数の値が等しくなるまで、大きいほうから小さいほうを引き続けるアルゴリズムです。ループ端の条件は終了条件だと注記があるので、xとyが等しくなった時点で抜けます。順に追うと、はじめは98と42で、xのほうが大きいのでxを98引く42の56にします。次も56と42でxが大きいので、xを14にします。すると14と42になり、今度はxのほうが大きくないので、yを42引く14の28にします。続いて14と28で、やはりyを28引く14の14にします。ここで両方が14になり、終了条件を満たして処理が終わります。これは引き算だけで最大公約数を求めるやり方で、98と42の最大公約数が14であることと一致します。一回で決めず、条件を満たすまで追いかけるのがこつです。よってxの値は14です。
ほかの選択肢はなぜ違うのか
- ア0:0という値は、引き算をくり返して最後に何も残らなくなった場合に出てくる形です。この流れ図はどちらかが0になるまで続けるのではなく、二つが等しくなった時点で止まるので、0まで下がることはありません。終了条件の読み違いから出てくる値です。
- ウ28:28という値は、途中でyがいったん取る値です。14と28になったところで手を止めるとこの値が目に入りますが、まだ二つが等しくないので処理は続きます。終了条件はxとyが等しくなることだと注記されています。
- エ56:56という値は、最初の引き算でxが取る値です。ここでもまだ42と等しくないので、処理は続きます。一回だけ計算して答えを決めると、この値を選んでしまうので、終了条件を満たすまで最後まで追いかける必要があります。
この問題の用語
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。同じ問題でも手順によって、処理にかかる時間や必要な記憶量が変わります。
出典:令和4年度 ITパスポート試験 問79(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)