入力関数(任意の関数の目的)、入力番号の配列、および入力配列の長さを持つ関数を作成するにはどうすればよいですか?
働き:
double accumulator(double (*function)(double, double), double array[], int length)
主要:
int main(){
double array[10];
for (int i=0; i<10; i++)
array[i] = i+1;
printf("Sum is: %g\n", accumulator(sum,array,10));
printf("Product is: %g\n", accumulator(product,array,10));
return 0;
}
たとえば、合計は55(1 + 2 + .... + 10)で、積362880(1 * 2 * ... * 10)である必要があります。関数は再帰的にすべきだと思いますが、それでも正しい結果を得ることができません:/
私はこの非再帰的な解決策を持っていますが、もちろんそれは合計に対してのみ機能します...
double accumulator(double (*function)(double, double), double array[], int length)
{
int temp = 0;
for (int i = 0;i<length;i++)
{
temp = (*function)(temp, array[i]);
}
return temp;
}
もちろん上に:
double sum(double x, double y){
return x+y;
}
double product(double x, double y){
return x*y;
}