2013-05-07 1 views
2

나는 e를 힘 x로 찾으려고합니다. 단순히 새로운/광석 효율적인 솔루션을 제안하는 것보다는 현재 구현에 문제가있을 수 있음을 지적하십시오 (그물에서 많은 것을 찾을 수 있음). 논리적 또는 런타임 오류가있는 것으로 보이며 디버깅 중에는 아무 것도 표시되지 않습니다. 미리 감사드립니다!e에서 C의 전원 x

cmath 라이브러리가 포함 된 , 프로그램은 (내 무한 내부 루프를 지적)이 의견에 대 한 응답에서 실행

double find_e_power_x(int x){ 
    int i = 1, j = 1, count = 1, accuracy = 15; 
    double xd = static_cast<double>(x); //pow takes double args 
    double jd = static_cast<double>(j); 
    double epx = 1.0; 
    while (count < accuracy){ 
      while (++i && ++j) { 
       epx += (pow(xd,jd)/fact(i)); //static_cast 
       count++; 
      } 
    } 
    return epx; 
} 

에 fine..stops을 컴파일

편집 :

while (count < accuracy){ 
       epx += (pow(xd,jd)/fact(i)); //static_cast 
       count++; 
       i++; 
       j++; 
    } 

출력 = 3.15485

으로 출력해도 입력 = 3 대답은 잘못되었습니다. 아래

은 54.8278

double find_e_power_x(int x){ 
    int i = 1, count = 1, accuracy = 15; 
    double xd = static_cast<double>(x); //pow takes double args 
    double id = static_cast<double>(i); 
    double epx = 1.0; 
    while (count < accuracy){ 
       epx += (pow(xd,id)/fact(i)); //static_cast 
       ++count; 
       ++id; 
       ++i; 
    } 
    return epx; 
} 
+0

몇 가지 샘플 입력과 출력을 제공 할 수 있습니까? –

+0

어떤 오류가 발생 했습니까? – JBL

+13

또한 언제 내부 루프가 종료 될 것으로 예상합니까? –

답변

6

당신은 당신의 루프 라운드 j 때마다 증가하는 =

I/P = 4

O/P 잘 작동최종 버전입니다, 그러나 jd은 아닙니다. 따라서 표현식 :

epx += (pow(xd,jd)/fact(i)); //static_cast 

효율적입니다 :

epx += (pow(xd, 1.0)/fact(i)); //static_cast 

마다.

이동이 라인 :

double jd = static_cast<double>(j); 
루프 내부

하거나 직접 jd를 증가.

+0

네, 고마워, 내 답글을 게시 한 답글을 보았다. 어쨌든 부하가 너무 큽니다. – ShivaniDhanked