2016-11-24 3 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

( '階乗を初めて目)'それは常にあるため、 '事実= 0をint型の '0'が返されますことを私に伝えます;' '事実= 1をint型されるべきです;'。その後、 'main()'は0で除算されます。 – VCSEL

+0

'factorial()'のループは、同じ理由で 'for(int i = 2; ......')で始まらなければなりません。 – VCSEL

+0

またfactorial()が失敗する前にどのくらいの大きさの "a"があるかについてのOPへの練習に移りました。 – doug

答えて

2

factsは、あなたの関数factorialに0に初期化されるので、常に0を返しているのと同じ、これを1に初期化してfactsを乗じ、0に始まるあなたのループに行きますi=0。試してみてください:

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

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