/* a8-3-2.c */
#include <stdio.h>
#define N 10

double get_var(int array[], int n);
double get_avg(int array[], int n);
int get_sum(int array[], int n);

int main(void)
{
	int ten[N] = {56, 89, 66, 37, 98, 77, 62, 82, 50, 71};
	double variance;

	variance = get_var(ten, N);
	printf("分散は%fです。\n", variance);

	return 0;
}

/*** 配列の分散を求める ***/
/* （仮引数）array：配列　n：要素数　（返却値）分散 */
double get_var(int array[], int n)
{
	int i;
	double avg, var = 0.0;

	/* 平均を求める */
	avg = get_avg(array, n);

	for (i = 0; i < n; i++) {
		var += (avg - array[i]) * (avg - array[i]);
	}
	return var / n;
}

/*** 配列の平均を求める ***/
/* （仮引数）array：配列　n：要素数　（返却値）平均 */
double get_avg(int array[], int n)
{
	/* 合計を要素数で割った値を返却 */
	return (double)get_sum(array, n) / n;
}

/*** 配列の合計を求める ***/
/* （仮引数）array：配列　n：要素数　（返却値）合計 */
int get_sum(int array[], int n)
{
	int i, sum = 0;

	for (i = 0; i < n; i++) {
		sum += array[i];
	}
	return sum;
}
