#include <stdio.h>
#include <stdarg.h>
#include <string.h>
double average(double first, ...);
char buf[100];
int main()
{
double mean;
mean = average(1.0, 2.0, 3.0, 9.0, -1.0);
printf("%s", buf);
printf(" 平均値は %5.2f\n", mean);
return 0;
}
double average(double first, ...)
{
double sum;
double d = first;
int count = 1;
char form[100];
va_list marker, marker_o;
strcpy(form, " ");
printf("data %5.1f", first);
sum = 0.0;
va_start(marker, first); /* 可変個引数の初期化 */
marker_o = marker;
while (d >= 0.0) {
sum += d;
d = va_arg(marker, double); /* 次の引数の取得 */
if (d >= 0.0) {
strcat(form, "%5.1f ");
count ++;
}
}
strcat(form, "\n");
vsprintf(buf, form, marker_o);
va_end(marker); /* 可変個引数のreset */
return (sum / count);
}