Cプログラミングに関して質問します。
この問題で中央値を出力するプログラムは作成できたのですが、配列の初期配置とソート結果も出力するプログラムはどうなりますか。
問題文 : 以下の配列をソートして中央値を求めるプログラムを作成せよ。
int a[21] = {25, 19, 46, 9, 20, 18, 39, 63, 4, 29, 3, 19, 23, 62, 57, 13, 23, 58, 24, 2, 29};
その他制限など : 宣言時に初期化してよい(scanfしなくてよい)
以下のような内容を画面に出力する
1. 初期配置
2. ソート結果
3. 中央値
以下、中央値を求めるプログラム
#include <stdio.h>
#include <string.h>
#define DATA_NUM 21 // データ数
#define MAX_DATA 63 // データの最大値
int main()
{
// 変数定義
int data[DATA_NUM] = {25, 19, 46, 9, 20, 18, 39, 63, 4, 29, 3, 19, 23, 62, 57, 13, 23, 58, 24, 2, 29};
int i, j, tmp;
double med; // 中央値
// 変数の初期化
i = 0;
j = 0;
tmp = 0;
med = 0;
//データを大きさの順に並べ替え
for(i = 1; i < DATA_NUM; i++)
{
for(j = 0; j < DATA_NUM - i; j++)
{
if(data[j] > data[j + 1])
{
tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
}
// メジアンを求める
if(DATA_NUM % 2 == 1) // データ数が奇数個の場合
{
med = data[(DATA_NUM - 1) / 2]; // 中央値
}
else // データ数が偶数の場合
{
med = (data[(DATA_NUM / 2) - 1] + data[DATA_NUM / 2]) / 2.0; // 中央値
}
printf("中央値は %0.2f\n", med);
return 0;
}
お礼
教えていただきありがとうございます。