1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

#include <iostream>
using std::cout;
using std::endl;
#include <cstdarg>
// function prototype(s)
int avg(int, ...);
double davg(int, ...);
int avgx(int&, int&, int, ...);
double avgx(double&, double&, int, ...);
int main()
{
cout << endl;
cout << "The average of 5 test scores is " << avg(5, 81, 92, 73, 84, 95) << endl;
cout << "The average of 5 test scores is " << davg(5, 56.8, 87.9, 99.2, 76.5, 85.3) << endl;\
int a, aMax, aMin;
a = avgx(aMax, aMin, 5, 45, 62, 89, 99, 34);
double b, bMax, bMin;
b = avgx(bMax, bMin, 5, 67.34, 67.8, 99.9, 76.3, 83.2);
cout << "The average of the 5 test scores is " << a << endl;
cout << "The maximum test score is " << aMax << endl;
cout << "The minimum test score is " << aMin << endl;
cout << "the average of the 5 test scores is " << b << endl;
cout << "The maximum of the 5 test scores is " << bMax << endl;
cout << "The minimum of the 5 test scores is " << bMin << endl;
}
// return average of a variable length list of integers
int avg(int n, ...)// "n" is the number of numbers in the list; "..." is the list
{
va_list list; // assign the name "list" to the variable length list of integers
va_start(list, n); // tell C++ that the list begins AFTER the parameter "n"
int num; // store the numbers from the list in "num" as they are "read"
// create the total of "n" numbers in the list
int total = 0; // track the total of the numbers in the list
for (int i = 0; i < n; i++)
{
num = va_arg(list, int); // set num equal to the next number in the list, as an int
total = total + num; // increment the total
}
va_end(list); // close the list  REQUIRED
// compute and return the average
return total / n;
}
double davg(int n, ...)
{
va_list list;
double sum2 = 0.0;
double total2 = 0;
va_start (list, n);
for (int x = 0; x < n; x++)
{
sum2 = va_arg(list, double);
total2 = total2 + sum2;
}
va_end(list);
total2 = total2 / n;
return total2;
}
int avgx(int& mx, int& mn, int n, ...) // n is the number of numbers in the list
{
va_list list; // assign the name "list" to the variable length list of integers
va_start(list, n); // tell C++ that the list begins AFTER the parameter "n"
int num; // store the numbers from the list in "num" as they are "read"
int total = 0; // track the total of the numbers in the list
for (int i = 0; i < n; i++)
{
num = va_arg(list, int); // set num equal to the next number in the list, as an int
if ((i == 0)  (mn > num)) // update min value
mn = num;
if ((i == 0)  (mx < num)) // update max value
mx = num;
total = total + num; // increment the total
}
va_end(list); // close the list  REQUIRED
// compute and return the average
return total / n;
}
double avgx(double& my, double& mz, int n, ...) // n is the number of numbers in the list
{
va_list list; // assign the name "list" to the variable length list of integers
va_start(list, n); // tell C++ that the list begins AFTER the parameter "n"
double numD; // store the numbers from the list in "num" as they are "read"
double totalD = 0.0;
for (int y = 0; y < n; y++)
{
numD = va_arg(list, int); // set num equal to the next number in the list, as an int
if ((y == 0)  (my > numD)) // update min value
my = numD;
if ((y == 0)  (mz < numD)) // update max value
mz = numD;
totalD = totalD + numD;
}
va_end(list); // close the list  REQUIRED
// compute and return the average
return totalD / n;
}
