平成23年度 特別 午前 問7
アルゴリズム
流れ図に関する問題
次の流れ図は,1から100までの整数の総和を求め,結果を変数 x に代入するアルゴリズムを示したものであるが,一部誤りがある。どのように訂正すればよいか。
〔流れ図〕(○数字は原典が処理の箱に振っている番号)
( 開始 )
│
①〔 1 → x 〕
│
〔 1 → i 〕
│
↓←────────┐
②< i : 100 > │ (判断・ひし形)
├─ > ─→(終了へ) │
└─ ≦ ─┐ │
↓ │
③〔 x + i → x 〕 │
│ │
④〔 i + 1 → i 〕───┘
│
( 終了 )- ア①の処理を“ 0 → x ”にする。
- イ②の条件判定を“ i : 99 ”にする。
- ウ③の処理を“ x + i → i ”にする。
- エ④の処理を“ x + 1 → x ”にする。
答えと解説を見る
✓ これが正解ア①の処理を“ 0 → x ”にする。
解説
積み上げを始める前の初期値が1だと1だけ多くなります。
総和を積み上げる変数は、まだ何も足していない状態から始める必要があります。この流れ図では、繰返しの中で1から100までのすべての値が総和の変数に足されますので、繰返しに入る前にその変数へ入れておいた中身が、そのまま答えに上乗せされます。いま入れているのは1ですから、正しい総和より1だけ大きい値が残ります。数え上げの範囲も、繰返しの進め方も、それ自体は正しく組まれています。ですから直すべきなのは、積み上げを始める前の1か所だけです。判定の軸は、繰返しの中身をいじるのか、それとも繰返しに入る前の初期値を直すのかという切り分けです。
ほかの選択肢はなぜ違うのか
- イ②の条件判定を“ i : 99 ”にする…:繰返しの終わりを一つ手前で切る直しです。上乗せされた1は残ったまま、最後の100を足す回が丸ごと失われますので、正しい総和からかえって遠ざかってしまいます。
- ウ③の処理を“ x + i → i ”にす…:足し込む先を、総和を入れる変数ではなく、数え上げに使う変数に変える直しです。総和が育たなくなるうえ、数え上げの進み方まで乱れてしまいます。
- エ④の処理を“ x + 1 → x ”にす…:数え上げに使う変数を一つ進める処理を、総和の側を一つ増やす処理に変える直しです。数え上げが進まなくなりますので、繰返しから抜け出せなくなります。
この問題の用語
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。同じ問題でも手順によって、処理にかかる時間や必要な記憶量が変わります。
出典:平成23年度 特別 基本情報技術者試験 午前 問7(改変:原典の図表をテキストに書き起こした)
同じ用語が出る問題
- 平成31年度 春期 午前 問18:理想的なハッシュ法の説明(アルゴリズム)
- 平成30年度 秋期 午前 問2:排他的論理和に関する問題(アルゴリズム)
- 平成29年度 春期 午前 問79(アルゴリズム)
- 平成29年度 春期 午前 問19:LRUに関する問題(アルゴリズム)
- 平成28年度 秋期 午前 問19:LRUに関する問題(アルゴリズム)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)