アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 201006 実施分 問7
要素番号が 0 から始まる配列 TANGO がある。n 個の単語が TANGO(1) から TANGO(n) に入っている。図は,n 番目の単語を TANGO(1) に入れるために,TANGO(1) から TANGO(n-1) の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。
[空欄] に入れる処理として正しいものはどれか。
流れ図: 開始 → [TANGO(n) → TANGO(0)] → ループ始端[i : n-1, -1, 0] → [空欄の処理] → ループ終端 → 終了。(注)ループにおける条件は,変数名:初期値,増分,終値 を示す。
- ア TANGO(i) → TANGO(i+1)
- イ TANGO(i) → TANGO(n-i)
- ウ TANGO(i+1) → TANGO(n-i)
- エ TANGO(n-i) → TANGO(i)
出典:基本情報技術者試験 科目A免除 修了試験 201006 実施分 問7
答えと解説を見る
正解:ア
覚える知識
配列要素のシフト(ずらし)処理の流れ図読解
要素を後ろへずらすときは、上書きを避けるため末尾側から順に代入する。
この問題で必要なこと
i=n−1から0まで1ずつ減らしながらTANGO(i+1)にTANGO(i)を代入すれば、後ろから順に1つずつずらせる。n番目は先にTANGO(0)に退避済み。
ひっかけ
代入の向きや添字(n−i)を取り違える選択肢。
この知識の出題:本試験系 1 回・免除試験 6 回(公開問題での観測値)