#include <stdarg.h> #include <stdio.h> void va_end(va_list arg) arg : 可変個数の引数リストへのポインタ
#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); }
平均値は 5.000000 平均値は 4.000000 平均値は 10.000000
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |