アルゴリズムとプログラミング|令和4年度 ITパスポート試験 問79
流れ図で示す処理を終了したとき,xの値はどれか。
〔流れ図〕(原典は JIS の流れ図記号で描かれた図。処理の順に書き起こしたもの)
```
開始
↓
x を98とする
↓
y を42とする
↓
┌─ 繰返し(ループ端の条件: x = y )(注)
│ ↓
│ < x : y > ── ≦ ──▶ y - x の計算結果を新たなyとする ─┐
│ │ > │
│ ▼ │
│ x - y の計算結果を新たなxとする │
│ ↓◀────────────────────────────────────────────────────┘
└─ 繰返し
↓
終了
(注)ループ端の条件は,終了条件を示す。
```
- 0
- ✓ これが正解14
- 28
- 56
解説
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まで下がることはありません。終了条件の読み違いから出てくる値です。
- 28という値は、途中でyがいったん取る値です。14と28になったところで手を止めるとこの値が目に入りますが、まだ二つが等しくないので処理は続きます。終了条件はxとyが等しくなることだと注記されています。
- 56という値は、最初の引き算でxが取る値です。ここでもまだ42と等しくないので、処理は続きます。一回だけ計算して答えを決めると、この値を選んでしまうので、終了条件を満たすまで最後まで追いかける必要があります。
この問題に関係する言葉
- 流れ図
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。書き表したプログラムと違い、それ自体は著作権で守られません。
- 変数
出典:令和4年度 ITパスポート試験 問79(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならアルゴリズムとプログラミングへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)