例如,我需要计算3个,5个,10个或更多个数字的平均值(我不知道具有以下函数的确切数字:
double average(/* Unknown number of parameters here */) {
}
所以,我需要计算参数的数量和总和的方法。我对c ++很陌生,我将不胜感激。
答案 0 :(得分:0)
你可以像这样编码。以下是详细信息:http://www.tutorialspoint.com/cprogramming/c_variable_arguments.htm
#include <stdio.h>
#include <stdarg.h>
double average(int num,...)
{
va_list valist;
double sum = 0.0;
int i;
va_start(valist, num); // initialize valist
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);
}
va_end(valist); // clean memory
return sum/num;
}
int main()
{
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}
答案 1 :(得分:0)
您可以使用初始化列表。
double average(std::initializer_list<int> i){...}
答案 2 :(得分:-1)
基于可变参数模板的另一种解决方案。优点:无需指定参数数量。
double sum(double value)
{
return value;
}
template<typename... Rest>
double sum(double first, Rest... rest)
{
return first + sum(rest...);
}
template<typename... Args>
double average(Args... args)
{
return sum(args...) / sizeof...(Args);
}