高校数学10分プログラミング(数学Ⅰ編 3.データの分析)3日目「データの中央値を求める」
マガジンリスト > 数学Ⅰ編 3.データの分析 > 3日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学I編 3.データの分析)の3日目です。
本日の課題は、データの中央値を求めるプログラムを作成することです。
中央値(メジアン)
データを値の大きさの順に並べたとき、中央の位置にくる値。データの大きさが偶数のときは、中央に2つの値が並ぶが、その場合は、その2つの値の平均値とする。
課題
データの中央値を求める関数 calcmedian を準備し、この関数を利用して、以下の「小テストの点数」のデータの中央値を求めてコンソールに出力するプログラムを作成してください。
$$
3 \ 4 \ 9 \ 7 \ 6 \ 10 \ 5 \ 5 \ 7 \ 9 \ 6 \ 8 \ 1 \ 5 \ 7 \ 10 \ 8 \ 6 \ 3 \ 7
$$
ヒント
データの中央値を求めるプログラムはソースコード1のようになります。
// データの中央値を算出する
void setup(){
// データ
int data_num = 20; // データ数
float[] data = {3,4,9,7,6,10,5,5,7,9,6,8,1,5,7,10,8,6,3,7}; // データ
// 中央値
float median = calcmedian(data_num, data);
println(median);
}
// バブルソート(昇順)
float[] bubblesort(
int data_num, // データ数
float[] data // データの配列
){
float[] bs = new float[data_num];
for(int i=0; i<data_num; i++){
bs[i] = data[i];
}
for(int i=0; i<data_num; i++){
for(int j=1; j<data_num-i; j++){
if(bs[j-1] > bs[j]){
float temp = bs[j];
bs[j] = bs[j-1];
bs[j-1] = temp;
}
}
}
return bs;
}
// 中央値を求める関数
float calcmedian(
int data_num, // データ数
float[] data // データの配列
){
// データを昇順にソートする
float[] bs = new float[data_num];
bs = bubblesort(data_num, data);
// 中央値を求める
float median = 0.0;
return median;
}
ソースコード1 データの中央値を求めるプログラム(未完成)
データの中央値を求める関数 calcmedian
// 中央値を求める関数
float calcmedian(
int data_num, // データ数
float[] data // データの配列
){
// データを昇順にソートする
float[] bs = new float[data_num];
bs = bubblesort(data_num, data);
// 中央値を求める
float median = 0.0;
return median;
}
の「// 中央値を求める」以下に、データの中央値を求めてその値を変数 median に代入して関数の返り値とするコードを追記して、プログラムを完成させてください。なお、データを昇順にソートする関数 bubblesort については、前課題『高校数学10分プログラミング(数学Ⅰ編 3.データの分析)2日目「データをソートする」』で作成したものを再利用しています。
それでは、よろしくお願いします。
MK's papa