
Patrick B. answered 05/19/19
Math and computer tutor/teacher
using namespace std;
#include <iostream>
#include <stdarg.h>
// inline function instead of macro : types changed to long so as to avoid compiler ambiguity error
inline double whatever( long x, long y)
{
return( (double)(x+y)/2.0f);
}
//same inline function that takes 4 arguements
inline double whatever( int x, int y, int z, int w)
{
return( (double)(x+y+z+w)/4.0f);
}
//same overloaded function that takes variable # of arguments
double whatever( int argcount, int num1, ...)
{
va_list ap;
long total;
int iNum;
double avg;
if (argcount>0)
{
total=num1;
va_start(ap,num1);
for (int iLoop=2; iLoop<=argcount; iLoop++)
{
iNum = va_arg(ap,int);
total += iNum;
}
}
va_end(ap);
avg = (double)((total*10.f)/argcount);
return(avg);
}
int main()
{
std::cout << whatever( (long)5,(long)10) << endl; //7.5
std::cout << whatever( 5,10,15,20) << endl; //12.5
std::cout << whatever ( 10, 1,2,3,4,5,6,7,8,9,10)<<endl; //55
}