2016-11-24 9 views
0

sin(x)을 계산할 수있는 프로그램을 만들려고합니다. x과 값이 n입니다. 내가 죄를 알고계산 sin (x)에서 이상한 출력 얻기

는 다음과 같이 계산 될 수있다 :

x - x3/3! + x5/5! - x7/7! + x9/9!... 

그러나 출력은 같은 수를 나에게 모든 시간을 제공 : -2147483648. 여기

내 코드입니다 :

#include <iostream> 
#include <cmath> 
using namespace std; 

int factorial(int); 

int main() { 

    int ans = 0; 
    double x = 0; 
    int n = 0; 

    cout << "Enter x value: "; 
    cin >> x; 
    x = x * (3.14159/180); 
    cout << endl; 
    cout << "Enter n value: "; 
    cin >> n; 

    ans = pow(x, 1 + (2 * n))/factorial(1 + (2 * n)); 

    cout << ans << endl; 

    return 0; 
} 

int factorial(int a) { 
    int facts = 0; 

    for (int i = 0; i <= a; i++) { 
     facts *= i; 
    } 
    return facts; 
} 
+1

'factorial()'을 처음 보게되면'int facts = 0; 때문에'0'을 반환 할 것이고'int facts = 1;'이어야합니다. 그 다음에'main()'은 0으로 나누어집니다. – VCSEL

+0

또한 factorial()의 루프는 같은 이유로 for (int i = 2; ......)로 시작해야합니다. – VCSEL

+0

또한 팩토리얼 리턴을 두 배로하고 팩트를 double로 선언하면 실행 가능한 팩토리얼을 생성하는 "a"의 범위가 크게 확장됩니다. 팩토리얼()이 실패하기 전에 얼마나 큰 "a"가 있는지에 대한 OP 로의 연습으로 넘어갑니다. – doug

답변

2

facts이 함수 factorial 0으로 초기화되고, 그래서 항상 같은 루프와 함께 facts을 곱하여 0으로 시작하는가는 1로 초기화 0을 반환 i=0. 시도 :

int factorial(int a) { 
    int facts = 1; 

    for (int i = 2; i <= a; i++) { 
     facts *= i; 
    } 
    return facts; 
}