アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20211212 実施分 問8
要素番号が 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免除 修了試験 20211212 実施分 問8(問題文は IPA の公開問題。解説は当サイト作成)
答えと解説を見る
正解:イ
覚える知識
配列要素のシフト(ずらし)処理の流れ図読解
配列要素を後ろにずらすときは、末尾側から順に移動させないと未処理の要素を上書きしてしまう。
この問題で必要なこと
TANGO[n]をTANGO[0]に退避後、i=n-1から0まで逆順にTANGO[i+1]←TANGO[i]で後ろへずらす。後ろから処理しないと上書きされる。
ひっかけ
ループ変数の増減方向と添字の向きを取り違えさせる(ウ・エはn−iを使う)。
この知識の出題:本試験系 1 回・免除試験 6 回(公開問題での観測値)