52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#включить "тест.з"
|
||
#включить "stdvv.c"
|
||
#include "common.c"
|
||
#включить <stdarg.h>
|
||
|
||
цел сумма1(цел х, ...) {
|
||
va_list ap;
|
||
va_start(ap, x);
|
||
|
||
для (;;) {
|
||
цел у = va_arg(ap, цел);
|
||
если (у == 0)
|
||
возврат х;
|
||
х += у;
|
||
}
|
||
}
|
||
|
||
цел сумма2(цел х, ...) {
|
||
va_list ap;
|
||
va_start(ap, x);
|
||
|
||
для (;;) {
|
||
двойн у = va_arg(ap, двойн);
|
||
х += у;
|
||
|
||
цел з = va_arg(ap, цел);
|
||
если (з == 0)
|
||
возврат х;
|
||
х += з;
|
||
}
|
||
}
|
||
|
||
пусто формат(символ *буф, символ *формат, ...) {
|
||
va_list ap;
|
||
va_start(ap, формат);
|
||
|
||
va_list ap2;
|
||
va_copy(ap2, ap);
|
||
vsprintf(буф, формат, ap2);
|
||
va_end(ap2);
|
||
}
|
||
|
||
цел главн() {
|
||
ПРОВЕРИТЬ(6, сумма1(1, 2, 3, 0));
|
||
ПРОВЕРИТЬ(55, сумма1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0));
|
||
ПРОВЕРИТЬ(21, сумма2(1, 2.0, 3, 4.0, 5, 6.0, 0));
|
||
ПРОВЕРИТЬ(210, сумма2(1, 2.0, 3, 4.0, 5, 6.0, 7, 8.0, 9, 10.0, 11, 12.0, 13, 14.0, 15, 16.0, 17, 18.0, 19, 20.0, 0));
|
||
ПРОВЕРИТЬ(0, ({ символ буф[100]; формат(буф, "%d %d", 2, 3); strcmp(буф, "2 3"); }));
|
||
|
||
printf("OK\n");
|
||
возврат 0;
|
||
} |