アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20180610 実施分 問7
要素番号が 0 から始まる配列 TANGO がある。n 個の単語が TANGO[1]から TANGO[n]に入っている。図は,n 番目の単語を TANGO[1]に移動するために,TANGO[1]から TANGO[n−1]の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。a に入れる処理として,適切なものはどれか。
流れ図(上から順に):
開始
TANGO[0] ← TANGO[n]
ループ(i : n−1, −1, 0)
a
ループ端
終了
(注)ループにおける条件は,変数名:初期値,増分,終値 を示す。
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20180610 実施分 問7(問題文は IPA の公開問題。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:イ
覚える知識
配列要素のシフト(ずらし)処理の流れ図読解
要素を後ろへずらすときは、末尾側から先に移動して上書きを防ぐ。
この問題で必要なこと
TANGO[n]をTANGO[0]に退避後、i を n−1 から 1 まで減らしながら TANGO[i+1] ← TANGO[i] で後ろへずらす。後ろから処理するので上書きを避けられる。
ひっかけ
TANGO[n−i]を使う選択肢は添字がずれて不適切な範囲を参照する。
この知識の出題:本試験系 1 回・免除試験 6 回(公開問題での観測値)。頻出知識ランキング456位(全1,254件中)。