我有困難的時候搞清楚什麼是錯在這裏:問題與COUT(C++)
#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;
}
好了,這裏是我的代碼。我對它很滿意。除了一件事情: sineOfnumber和cosOfnumber,在調用sinTaylor和cosTaylor之後,將在下面的cout行中相互添加,以便相互打印。 換句話說,如果number等於可以說,.7853,1.14將打印在打印餘弦號的行中,並且sineOfnumber將正常打印結果。 任何人都可以幫助我確定這是爲什麼?非常感謝!
帶'double'參數的factorial函數和帶'double'計數器的for循環都是壞跡象。 – chris 2013-02-12 03:15:32
是的,我知道。老實說,這真的讓我感到很難受,我認真地不能讓程序做它應該做的事,除非一切都是雙重的。這是不正確打印餘弦數字的原因嗎? – user2063355 2013-02-12 03:18:21
它可能是。這是'pow'功能給你一個難的時間嗎?只要確保一個參數是雙重的。例如,'pow(-1。,n)' – chris 2013-02-12 03:20:12