C++ 我的程序没有';我运行它时不显示任何内容(圆周率在C+;+;)中的近似值)
正如标题所示,我正在尝试运行该程序,但它没有显示任何内容,没有错误,什么都没有 到目前为止,我的代码是:C++ 我的程序没有';我运行它时不显示任何内容(圆周率在C+;+;)中的近似值),c++,C++,正如标题所示,我正在尝试运行该程序,但它没有显示任何内容,没有错误,什么都没有 到目前为止,我的代码是: /* based on : pi^2/6 = 1/1^2 + 1/2^2 + 1/3^2 + .... + 1/n^2 */ #include <iostream> #include <cmath> using namespace std; int main() { long long i; long double sum, fraction, pi;
/* based on : pi^2/6 = 1/1^2 + 1/2^2 + 1/3^2 + .... + 1/n^2 */
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long i;
long double sum, fraction, pi;
sum = 0.0 ; /* sum reprisents: 1/1^2 + 1/2^2 + 1/3^2 + .... + 1/n^2 */
i = 1; /* i as the denominator of the fraction */
fraction = 1.0; /* fraction = 1/(((long double) i)*((long double) i)); */
while (fraction > 1.0e-15);
{
sum += fraction;
fraction = (long double)1 / (((long double) i)*((long double) i));
i++;
}
pi = sqrt(6*sum); /* getting pi since currently it's : pi^2/6 = sum */
cout << "pi = " << pi << endl;
return 0;
}
/*基于:pi^2/6=1/1^2+1/2^2+1/3^2+…+1/n^2*/
#包括
#包括
使用名称空间std;
int main()
{
龙龙我;
长双和,分数,π;
总和=0.0;/*总和转述:1/1^2+1/2^2+1/3^2+1/n^2*/
i=1;/*i作为分数的分母*/
分数=1.0;/*分数=1/((长双精度)i)*((长双精度)i))*/
而(分数>1.0e-15);
{
总和+=分数;
分数=(长双精度)1/((长双精度)i)*((长双精度)i));
i++;
}
pi=sqrt(6*sum);/*正在获取pi,因为当前它是:pi^2/6=sum*/
cout你的while
后面紧跟着一个分号,这使得它永远旋转而不会到达分数被更新的块
您所写的解析与此相同:
while (fraction > 1.0e-15) {
}
// I'll never reach this block
{
sum += fraction;
fraction = (long double)1 / (((long double) i)*((long double) i));
i++;
}
编辑:这是在开发过程中使用linter和/或自动代码格式化程序的一个很好的理由,因为它们会导致明显的错误。回答下面的问题。但是编译器警告消息告诉了你什么?任何编译器都会警告这个可能的错误。你应该听。如果你没有打开编译器警告,那么你应该ld找出如何做到这一点,并始终将其打开。打开编译器警告并修复它们:。警告应该与错误一样严重(如果不是更多),您只需要帮助编译器报告它们(例如-Wall-Werror
对于gcc来说是可以的)除了上面提到的错误,我希望fwiw之前的一行I++
不需要使用高级工具。阅读编译器警告就足够了(在本例中)是的,警告通常会告诉您“有问题”这通常是足够的。但是我认为用“代码> CLAN格式和 Cang-Tydiy 这样的工具是一个很大的帮助,尤其是对于那些先进入C++的人,需要一些手握。如果你的编辑器在代码中键入,马上就告诉你,这会使错误更加明显。谢谢。各位!我的程序现在正在运行,不幸的是,它没有达到我希望的结果,但我会继续努力,