Ich versuche, ein Programm zu erstellen, das sin(x)
gegebenen x
und einen Wert n
berechnen kann.Erhalte eine seltsame Ausgabe von der Berechnung sin (x)
I sin wissen kann wie folgt berechnet werden:
x - x3/3! + x5/5! - x7/7! + x9/9!...
Aber der Ausgang gibt mir die gleiche Anzahl jedes Mal: -2147483648
.
Hier ist mein Code:
#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;
}
Ein erster Blick auf 'factorial()' sagt mir, dass es immer '0' zurückgibt wegen' int facts = 0; 'das sollte' int facts = 1; 'sein. Anschließend läuft 'main() 'in eine Division durch Null ... – VCSEL
Außerdem sollte die Schleife in' factional() 'mit' for (int i = 2; ......' aus dem gleichen Grund beginnen. – VCSEL
Auch , haben factorial return ein double und deklarieren facts ein double. Dies wird erheblich erweitern den Bereich von "a", die lebensfähige factorials produzieren. Links zu einer Übung für das OP, wie groß "a" ist vor factorial() fehlschlägt. – doug