科目B
基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問14
次の記述中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。
要素数が 1 以上で,昇順に整列済みの配列を基に,配列を特徴づける五つの値を返すプログラムである。
関数 summarize を summarize({0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1})として呼び出すと,戻り値は である。
〔プログラム〕
○実数型: findRank(実数型の配列: sortedData, 実数型: p)
整数型: i
i ← (p × (sortedDataの要素数 - 1)) の小数点以下を切り上げた値
return sortedData[i + 1]
○実数型の配列: summarize(実数型の配列: sortedData)
実数型の配列: rankData ← {} /* 要素数0の配列 */
実数型の配列: p ← {0, 0.25, 0.5, 0.75, 1}
整数型: i
for (i を 1 から pの要素数 まで 1 ずつ増やす)
rankDataの末尾 に findRank(sortedData, p[i])の戻り値 を追加する
endfor
return rankData
答えを選ぶ
出典:基本情報技術者試験 科目B サンプル問題セット(2022年12月公表) 問14(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:ク
覚える知識
パーセンタイル(四分位数)の算出
整列済みデータで、割合 p の位置の値を取り出すと四分位数(パーセンタイル)が求まる。位置の計算で端数をどう丸めるかで値が変わる。
この問題で必要なこと
要素数 10 なので p×9 を切り上げて i とし、sortedData[i+1] を返す。0→i=0→0.1、0.25→2.25→3→0.4、0.5→4.5→5→0.6、0.75→6.75→7→0.8、1→9→1。結果は {0.1,0.4,0.6,0.8,1} でクが正解。
ひっかけ
切り上げではなく切り捨てる(0.3・0.5・0.7 になる)、あるいは要素番号に +1 するのを忘れると、ア〜キの組合せになる。