참조

2013-03-10 1 views
0

에 의해 전달 함수에서 숫자를 곱하면 어떻게 내 주요 방법 내 모든 다른 기능 위에 다음 코드를했다 : 나는 오류를 마이크로 소프트 비주얼 스튜디오 C++ 컴파일러에서참조

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; 
} 

를 얻을 : 식 산술 또는 열거 형을 가져야합니다. 나는 코멘트가 어디에서 오는지를 지적했다. 누군가가 왜이 오류가 있고 어떻게이 오류를 해결할 수 있는지 설명 할 수 있습니까?

+0

afaik 함수는 참조로 함수를 전달할 수 없으며 함수 포인터 만 있으므로 사용중인 것입니다. (참조 부분은 driectly 함수를 호출하는 것으로 간주 될 수 있습니다) – ted

답변

2

잘 가지 않을 것이다 분수로 함수 포인터를 곱이 대신

sum = sum + f(.0001); 

사용해보십시오.

+0

따라서 x^2를 반환하는 함수에 0과 1 사이의 숫자를 곱하면 안됩니까? – Chase

+0

물론 가능하지만 함수 포인터 자체에 숫자를 곱할 수는 없습니다. * f *는 전달 된 double을 사용하는 함수에 대한 포인터 일뿐입니다. 유용하게 사용할 함수를 호출해야합니다. 변수 x를 사용할 수 있다면'sum = sum + f (x) * 0.0001'이됩니다. – fredrik

3

x의 값을 f(x)에 통합하려고 시도합니다. a에서 b까지?

코드가 잘못된 경우.

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

그런 다음 함수를 호출하기 위해 사용에게 전화 f(x)을 계산합니다 : 귀하의 0.0001

는 경우에 당신의 라인을 따라 뭔가를 사용하는 것입니다, 당신은 실제로 10000 단계를 사용하려고한다는 것을 나타낼 것 포인터, 그리고 합계.

+0

다른 가능성있는 실수를 발견했지만 함수 포인터에 관해 질문의 핵심을 밝히지 않았습니다. 그것을 큰 그릇으로 만들기 위해 더하기 – ted

+0

나는 그것이 가지고 있다고 생각했지만 그것을 분명하게하기 위해 편집했다. –