0

メインメソッドと他のすべての関数の上に次のコードがあります。

typedef double (*FUNC)(double);

double integrate(FUNC f, double a, double b){
double sum = 0;
for(int i=a; i<=b; i++){
    sum = sum + (f * .0001); //error occurs here, red squiggly line under "f"
}
    return sum;
}

Microsoft Visual Studio C++ コンパイラで、次のエラーが表示されます。式には算術型または列挙型が必要です。コメントでエラーがどこから来たのかを指摘しました。このエラーが発生する理由と、このエラーを解決する方法を誰かに説明してもらえますか?

4

2 に答える 2

3

fromから?f(x)の値を統合しようとしていると思います。xab

その場合、あなたのコードはかなり間違っています。

0.0001 は、実際に 10000 ステップを使用しようとしていることを示しているようです。その場合、次の行に沿って何かを使用します。

const int steps = 10000;
double x = a;
double delta = (b - a) / steps;
for(int i = 0; i < steps; i++, x += delta)

f(x)次に、呼び出しを使用して関数ポインターを呼び出して計算し、それを合計します。

于 2013-03-10T19:52:35.007 に答える
2

代わりにこれを使用してみてください

 sum = sum + f(.0001);

関数ポインタに分数を掛けると、うまくいきません。

于 2013-03-10T19:43:27.370 に答える