Траблы с функциями с переменным количеством аргументов на C
Задача такая - написать функции максимума, минимума и среднего значения. Но при условии, что мы не задаем количество переменных при активации функции. Написал программу - максимум находит хорошо, но вот минимум и среднее значение - плохо. Пока искал проблему, выяснил, что функция берет из неоткуда нули. Искал инфу как правильно сделать, ниче не мог найти. Прошу подсказать, что я делаю не так.
#include <stdio.h>
#include <math.h>
#include <stdarg.h>
double max(double n, ...){
va_list factor;
va_start(factor, n);
double result = n, a;
printf("%lf\n", result);
while ((a = va_arg(factor, double))){
if (a > result) result = a;
printf("%lf 1\n", result);
}
va_end(factor);
return result;
}
double min(double n, ...){
va_list factor;
va_start(factor, n);
double result = n, a;
printf("%lf\n", result);
while ((a = va_arg(factor, double))){
if (a < result) result = a;
printf("%lf 1\n", result);
}
va_end(factor);
return result;
}
double sred(int n, ...){
va_list factor; //указатель va_list
va_start(factor, n);
double a;
int count = 0;
double result = 0;// устанавливаем указатель
while ((a = va_arg(factor, double))){// получаем значение текущего параметра типа int
result += a;
count++;
printf("%lf %d 3\n", result, count);
}
va_end(factor); // завершаем обработку параметров
return result/count;
}
int main() {
double a = max(54.0, 32.0, 45.0, 3.0);
double s = min(56.0, 32.0, 45.0, 33.0);
double k = sred(56.0, 32.0, 45.0, 33.0);
printf("%lf, %lf, %lf", a, s, k);
return 0;
}
Источник: Stack Overflow на русском