我的main方法和其他所有函数上面都有以下代码:
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 ++编译器中,我收到错误:Expression必须具有算术或枚举类型。我在评论中指出错误来自上方。有人可以向我解释为什么我有这个错误以及如何解决这个错误?
答案 0 :(得分:3)
我认为您试图将f(x)
的值x
从a
整合到b
?
在这种情况下,您的代码非常不正确。
你的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)
来调用函数指针,并将其求和。
答案 1 :(得分:2)
尝试使用此代替
sum = sum + f(.0001);
将函数指针乘以分数不会很好。