あなたはまた、可変個の引数を使用して平均値を計算することができます。この関数の原理は、未知数の引数がスタックに格納されており、それを取ることができる関数です。
double average(int n, ...) // where n - count of argument (number)
{
int *p = &n; // get pointer on list of number in stack
p++; // get first number
double *pp = (double *)p; // transformation of the pointer type
double sum = 0;
for (int i = 0; i < n; pp++, i++) //looking all stack
sum+=(*pp); // summarize
return sum/n; //return average
}
そして、あなたは次のようにこの機能を使用することができます
double av1 = average(5, 3.0, 1.5, 5.0, 1.0, 2.0);
double av2 = average(2, 3.0, 1.5);
しかし、引数の数をnと一致している必要があります。ここで
テストの数は、あなたが入力を読むまで知られていない場合は、* N *数値の平均を行うためにループを必要とするだろう。 – FrustratedWithFormsDesigner
ステップ0:これをスタックオーバーフローに移動します。ここでは話題にはならない。 –
優れた質問と優れた観察。ハードコーディング '5'はa)魔法、b)冗長です。 –