Я имею трудное время выяснить, что здесь не так:Проблемы с соиЬ (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, которая будет печатать друг друга. Другими словами, если число равно разрешению, то в строке, предназначенной для печати cosineOfnumber, будет напечатано 1.14, а в строке sineOfnumber будет напечатан результат. Может ли кто-нибудь помочь мне определить, почему это так? Спасибо огромное!
Факторная функция с параметром 'double' и цикл for с двойным счетчиком являются плохими знаками. – chris
Да, я знаю. Честно говоря, это действительно беспокоит меня до смерти, я серьезно не могу заставить программу делать то, что она должна, если все не будет двойным. Является ли это причиной неправильной печати cosineOnnumber? – user2063355
Это может быть. Это функции 'pow' дают вам трудное время? Просто убедитесь, что один аргумент является двойным. Например, 'pow (-1., N)' – chris