#include <stdio.h>
#include <stdarg.h>
double average(int, double first, ...);
/************/
/* main */
/************/
int main()
{
double mean;
/*
10と4つの実数値の平均値(負の値がデータの終了記号)
*/
mean = average(10, 1.0, 2.0, 3.0, 9.0, -1.0);
printf("平均値は %f\n", mean);
/*
10と3つの実数値の平均値(負の値がデータの終了記号)
*/
mean = average(10, 1.0, 2.0, 3.0, -1.0);
printf("平均値は %f\n", mean);
/*
可変個数の引数がない場合(負の値がデータの終了記号)
*/
mean = average(10, -1.0);
printf("平均値は %f\n", mean);
return 0;
}
/********************/
/* 平均値の計算 */
/********************/
double average(int base, double first, ...)
{
double sum;
double d = first;
int count = 1;
va_list marker;
sum = (double)base;
va_start(marker, first); /* 可変個引数の初期化 */
while (d >= 0.0) {
sum += d;
count ++;
d = va_arg(marker, double); /* 次の引数の取得 */
}
va_end(marker); /* 可変個引数のreset */
return (sum / count);
}