見出し画像

高校数学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

いいなと思ったら応援しよう!