サンプル問題 [科目B]問14
問14
次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。
要素数が1以上で,昇順に整列済みの配列を基に,配列を特徴づける五つの値を返すプログラムである。
関数 summarize を summarize({0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}) として呼び出すと,戻り値は である。
〔プログラム〕
要素数が1以上で,昇順に整列済みの配列を基に,配列を特徴づける五つの値を返すプログラムである。
関数 summarize を summarize({0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}) として呼び出すと,戻り値は である。
〔プログラム〕
- {0.1, 0.3, 0.5, 0.7, 1}
- {0.1, 0.3, 0.5, 0.8, 1}
- {0.1, 0.3, 0.6, 0.7, 1}
- {0.1, 0.3, 0.6, 0.8, 1}
- {0.1, 0.4, 0.5, 0.7, 1}
- {0.1, 0.4, 0.5, 0.8, 1}
- {0.1, 0.4, 0.6, 0.7, 1}
- {0.1, 0.4, 0.6, 0.8, 1}
分類
アルゴリズムとプログラミング » プログラミングの諸分野への適用
正解
ク
解説
関数 summarize では、for文を使って配列 p の要素ひとつずつに対して、サブルーチンである関数 findRank を呼出し、その結果を戻り値の配列である rankData に追加しています。
配列 p は{0, 0.25, 0.5, 0.75, 1}なので、rankData には、以下の5つの結果が格納されることになります。ここで、sortedDataの要素数 は10なので、関数 findRank 内で使われている"sortedDataの要素数-1"は9となります。
配列 p は{0, 0.25, 0.5, 0.75, 1}なので、rankData には、以下の5つの結果が格納されることになります。ここで、sortedDataの要素数 は10なので、関数 findRank 内で使われている"sortedDataの要素数-1"は9となります。
- findRank(sortedData, 0)
- i ← (0 × 9) = 0 を切り上げた値 ⇒ 0
return sortedData[1] = 0.1 - findRank(sortedData, 0.25)
- i ← (0.25 × 9) = 2.25を切り上げた値 ⇒ 3
return sortedData[4] = 0.4 - findRank(sortedData, 0.5)
- i ← (0.5 × 9) = 4.5を切り上げた値 ⇒ 5
return sortedData[6] = 0.6 - findRank(sortedData, 0.75)
- i ← (0.75 × 9) = 6.75を切り上げた値 ⇒ 7
return sortedData[8] = 0.8 - findRank(sortedData, 1)
- i ← (1 × 9) = 9を切り上げた値 ⇒ 9
return sortedData[0] = 1