基本情報技術者令和2年免除 問9
問9
要素番号が0から始まる配列 TANGO がある。n個の単語が TANGO[1] から TANGO[n] に入っている。図は,n番目の単語を TANGO[1] に移動するために,TANGO[1] から TANGO[n-1] の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。aに入れる処理として,適切なものはどれか。
- TANGO[i] ← TANGO[n-i]
- TANGO[i+1] ← TANGO[i]
- TANGO[n-i] ← TANGO[i]
- TANGO[n-i] ← TANGO[i+1]
- [出典]
- 午前免除試験 R2-7月 問9
- 基本情報技術者 H23 問7と同題
分類
テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム
正解
イ
解説
最後の要素である TANGO[n] を TANGO[1] に移動する場合を考えてみます。
まず、ループ処理の前に TANGO[n] のデータを TANGO[0] にコピーします。次のループ処理で単語を順に一つずつ後ろにずらすには、TANGO[4]→TANGO[5]、TANGO[3]→TANGO[4] というように前の1つ前の配列要素のデータをコピーしていく処理が必要です。ループ処理は、変数iが、n-1(配列要素のうち最後の1つ前) から 0(最初) まで続きます。aに入る処理をループ変数iで表すと、現在の配列要素 TANGO[i] を値を1つ後ろの配列要素 TANGO[i+1] にコピーする TANGO[i+1] ← TANGO[i] が適切です。
まず、ループ処理の前に TANGO[n] のデータを TANGO[0] にコピーします。次のループ処理で単語を順に一つずつ後ろにずらすには、TANGO[4]→TANGO[5]、TANGO[3]→TANGO[4] というように前の1つ前の配列要素のデータをコピーしていく処理が必要です。ループ処理は、変数iが、n-1(配列要素のうち最後の1つ前) から 0(最初) まで続きます。aに入る処理をループ変数iで表すと、現在の配列要素 TANGO[i] を値を1つ後ろの配列要素 TANGO[i+1] にコピーする TANGO[i+1] ← TANGO[i] が適切です。