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 tof(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 回答