アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20200726 実施分 問9
要素番号が 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免除 修了試験 20200726 実施分 問9(問題文は IPA の公開問題。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:イ
覚える知識
配列要素のシフト(ずらし)処理の流れ図読解
要素を後ろへずらすときは、末尾側から順に代入して上書きを避ける。
この問題で必要なこと
TANGO[0]に退避後、iをn−1から0まで減らしながらTANGO[i+1]←TANGO[i]で後ろへずらす。後ろから処理すれば上書きが起きない。
ひっかけ
n−iを使う添字式で、ずらす向きや範囲を誤らせる。
この知識の出題:本試験系 1 回・免除試験 6 回(公開問題での観測値)。頻出知識ランキング456位(全1,254件中)。