Problems with cout ( C++)
Problems with 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行中相互添加,该cout行将相互打印。换句话说,如果数字等于,比方说,.7853,1.14将打印在打算打印cosineOfnumber的行中,而sineOfnumber将正常打印结果。有人能帮我找出原因吗?非常感谢!
您是否初始化过函数中的变量sumSine和sumCosine?它们不能保证从零开始,所以当您在循环中调用+=时,可能会将计算值添加到垃圾中。
试着将这两个变量初始化为零,看看会发生什么,因为除此之外,代码似乎还可以。
正弦的级数是(对不起LaTeX):
sin(x) = sum_{n ge 0} frac{x^{2 n + 1}}{(2 n + 1)!}
如果你看,给定项t_{2n+1},你可以将项t_{2N+3}计算为
t_{2 n + 3} = t_{2 n + 1} * frac{x^2}{(2 n + 2)(2 n + 3)}
所以,给定一个项,你可以很容易地计算下一个项。如果你看看余弦的级数,它是相似的。生成的程序效率更高(无需重新计算阶乘),可能更精确。当把浮点数加起来时,从最小到最大加起来更精确,但我怀疑这会有什么不同。
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- std::cout.imbue()多重调用
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 在 COUT 语句中使用 COUT 调用函数
- GCC 4.8.2 自动矢量化由于 cout 而失败
- std::cout输出int时出现编译错误
- 在这种情况下显式调用时,std::cout 如何更改析构函数的行为?
- C++ Setter/Getter,cout 工作,printf 失败
- C++ cout 将双精度对齐到精度 2 并正确对齐
- 结构元素名称要 cout?
- 使用模板类重载 cout
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- 带有 cout 的指针在C++
- cout 指针时的实际数字
- COUT 无法提供输出可能是由于内联组装
- C++程序在一定行后未正确编译[cout语句]
- 如何在逗号后使用 cout 打印整数值,而无需在逗号后添加额外的零C++?