C . . _ _(__, _ _, ...) _ . - <stdarg.h> type va_arg(va_list argptr, type); va_arg, va_start va_end , . , , printf(). va_list <stdarg.h>( C++ <cstdarg>). , , . ( ), . last_parm. va_start(). , argptr, va_start(). va_arg() type, . va_end(), . va_end() , . sum_series(), . , . . 1 1 1 1 1 - + - + - + ... + - 2 4 8 16 2n 0.968750. /* . * / #include <stdio.h> #include <stdarg.h> double sum_series(int, ...); int main(void) { double d; d = sum_series(5, 0.5, 0.25, 0.125, 0.0625, 0.03125); printf(" %f\n",d); return 0; } double sum_series(int num, ...) { double sum = 0.0, t; va_list argptr; /* argptr. */ va_start(argptr, num); /* . */ for(; num; num--) { t = va_arg(argptr, double); sum += t; } /* . */ va_end(argptr); return sum; } |
Нет комментариев. Оставить комментарий: |