サンプル問題 [科目B]問3
問3解説へ
次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
関数 makeNewArray は,要素数2以上の整数型の配列を引数にとり,整数型の配列を返す関数である。関数 makeNewArray を makeNewArray({3,2,1,6,5,4})として呼び出したとき,戻り値の配列の要素番号5の値は となる。
〔プログラム〕
関数 makeNewArray は,要素数2以上の整数型の配列を引数にとり,整数型の配列を返す関数である。関数 makeNewArray を makeNewArray({3,2,1,6,5,4})として呼び出したとき,戻り値の配列の要素番号5の値は となる。
〔プログラム〕
- 5
- 6
- 9
- 11
- 12
- 17
- 21
正解 カ問題へ
分野:アルゴリズムとプログラミング
カテゴリ:プログラムの基本要素
カテゴリ:プログラムの基本要素
広告
解説
makeNewArray({3,2,1,6,5,4})を呼び出したときの処理の流れをトレースしていきます。
out の末尾 に in[1] の値 を追加する
配列の要素番号は1から始まるという条件があるので in[1] の値は 3、outに3を追加します。
⇒out = {3}
for文による繰返し処理に入ります。inの要素数は 6 なので、iの値を 2 から 6 まで1ずつ増やしながら5回繰り返します。
【別解】
outの末尾に追加される値は、
out[1] = in[1] = 3
out[2] = in[1] + in[2] = 3 + 2 = 5
out[3] = in[1] + in[2] + in[3] = 3 + 2 + 1 = 6
…
という関係になっているので、
out[5] = in[1] + in[2] + in[3] + in[4] + in[5] = 3 + 2 + 1 + 6 + 5 = 17
out の末尾 に in[1] の値 を追加する
配列の要素番号は1から始まるという条件があるので in[1] の値は 3、outに3を追加します。
⇒out = {3}
for文による繰返し処理に入ります。inの要素数は 6 なので、iの値を 2 から 6 まで1ずつ増やしながら5回繰り返します。
- i = 2
- tail ← out[outの要素数] = out[1] = 3
⇒tail = 3
outの末尾に tail + in[2] = 3 + 2 = 5 を追加する
⇒out = {3, 5} - i = 3
- tail ← out[outの要素数] = out[2] = 5
⇒tail = 5
outの末尾に tail + in[3] = 5 + 1 = 6 を追加する
⇒out = {3, 5, 6} - i = 4
- tail ← out[outの要素数] = out[3] = 6
⇒tail = 6
outの末尾に tail + in[4] = 6 + 6 = 12 を追加する
⇒out = {3, 5, 6, 12} - i = 5
- tail ← out[outの要素数] = out[4] = 12
⇒tail = 12
outの末尾に tail + in[5] = 12 + 5 = 17 を追加する
⇒out = {3, 5, 6, 12, 17} - i = 6
- tail ← out[outの要素数] = out[5] = 17
⇒tail = 17
outの末尾に tail + in[6] = 17 + 4 = 21 を追加する
⇒out = {3, 5, 6, 12, 17, 21}
【別解】
outの末尾に追加される値は、
out[1] = in[1] = 3
out[2] = in[1] + in[2] = 3 + 2 = 5
out[3] = in[1] + in[2] + in[3] = 3 + 2 + 1 = 6
…
という関係になっているので、
out[5] = in[1] + in[2] + in[3] + in[4] + in[5] = 3 + 2 + 1 + 6 + 5 = 17
広告