2014-05-18 3 views
0

Dev C++을 사용하고 있으며 코드는 c입니다. summ-calculator를 프로그램하고 싶습니다. 다음 시리즈의 용어 수를 합계합니다.Fcatorial 합계가 올바르게 작동하지 않습니다.

1/1! + 2/2! + 3/3! + .... 용어가 입력 여기

에서 가져옵니다 내 코드이지만 내가 실행할 때 응답이

#include<stdio.h> 
#include<conio.h> 
int main(void) 
{ 
long i,j,facto=1,inp; 
double sum=0; 
scanf("%ld",&inp); 
for (i=0;i<inp;i++) 
{ 
    for (j=i;j>1;j--) 
    { 
     facto *= j; 
    } 
    sum += i/facto; 
} 
printf("%f",sum); 

getch(); 
return 0; 
} 
+0

프로그램을 실행할 때 입력 한 내용은 무엇입니까? 'scanf '의 호출은 어떤 입력을 기다리는 것을 의미한다. (번호를 입력 했습니까? 입력을 누르셨습니까?) –

답변

1

당신은 코드 몇 가지 문제가 있습니다

  1. 당신을 내부 루프를 전혀 가질 필요가 없습니다. 이것은 많은 시간을 차지하며 아마 자주 출력을 볼 수없는 이유 일 것입니다 (아마도 의 이유는 ing입니다). 다음과 같이 수행 factoint들입니다

    facto = 1; 
    for (i=1;i<=inp;i++) 
    { 
        facto *= i; 
        sum += i/facto; 
    } 
    
  2. i 모두 이후와, i/facto 대부분의 시간 0입니다. 그래서 수정하십시오.

    sum += 1. * i/facto; 
    
0

변경
for (i=0;i<inp;i++)for (i=1;i<=inp;i++)
그리고
for (j=i;j>1;j--) for (j=i;j>=1;j--)
그리고
sum += i/facto; sum += i*1.0/facto;
그리고
에에이후 sum += i*1.0/facto; 넣기 facto =1;

관련 문제