私はここで何が悪いのかを理解するのに最も苦労しています:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double fact(double);
double sinTaylor(double);
double cosTaylor(double);
int main()
{
double number, sineOfnumber, cosineOfnumber;
cout << "Enter a number, then I will calculate the sine and cosine of this number" << endl;
cin >> number;
sineOfnumber = sinTaylor(number);
cosineOfnumber = cosTaylor(number);
cout << fixed << endl;
cout << cosineOfnumber << endl;
cout << sineOfnumber << endl;
return 0;
}
double fact(double n)
{
double product = 1;
while(n > 1)
product *= n--;
return product;
}
double sinTaylor(double x)
{
double currentIteration, sumSine;
for(double n = 0; n < 5; n++)
{
currentIteration = pow(-1, n)*pow(x, 2*n+1) / fact(2*n+1);
sumSine += currentIteration;
}
return sumSine;
}
double cosTaylor(double y)
{
double currentIteration, sumCosine;
for(double n = 0; n < 5; n++)
{
double currentIteration = pow(-1, n)*pow(y, 2*n) / fact(2*n);
sumCosine += currentIteration;
}
return sumCosine;
}
さて、これが私のコードです。私はそれにかなり満足しています。1つを除いて、sineOfnumberとcosOfnumberは、sinTaylorとcosTaylorを呼び出した後、互いに出力する次のcout行に互いに追加します。つまり、numberがたとえば.7853と等しい場合、cosineOfnumberを出力する予定の行に1.14が出力され、sineOfnumberは結果を正常に出力します。誰かが私がこれがなぜであるかを特定するのを手伝ってもらえますか?どうもありがとう!