Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用while,pi逼近实现C上的无限循环_C_Loops_While Loop_Pi - Fatal编程技术网

用while,pi逼近实现C上的无限循环

用while,pi逼近实现C上的无限循环,c,loops,while-loop,pi,C,Loops,While Loop,Pi,我在这个循环中遇到了一些问题。它是无限的,但我不知道是什么引起的。这是一段长代码的一部分,所以我只是发布了其中的一部分 我应该使用Machin的近似级数,它应该只有一个.001的误差范围(因此while循环上的操作) 在初始化is之前使用contWallis 假设您按照注释中的建议将其设置为1,则在while循环的第二次迭代中,如果((contWallis%2)!=0)的值将为false,因此您将永远不会输入该条件体,并且永远不会更改该循环迭代中任何变量的值,在下面的任何一个问题上。我已经解决了

我在这个循环中遇到了一些问题。它是无限的,但我不知道是什么引起的。这是一段长代码的一部分,所以我只是发布了其中的一部分 我应该使用Machin的近似级数,它应该只有一个.001的误差范围(因此while循环上的操作)


在初始化is之前使用
contWallis


假设您按照注释中的建议将其设置为
1
,则在while循环的第二次迭代中,
如果((contWallis%2)!=0)
的值将为false,因此您将永远不会输入该条件体,并且永远不会更改该循环迭代中任何变量的值,在下面的任何一个问题上。

我已经解决了这个问题,我给了contWallis一个值1,它仍然不起作用,你在哪里做的?你上面的代码仍然没有初始化。现在编辑,对不起,这是我的第一个问题。也许你可以在浪费贡献者的时间之前耗尽你自己的调试工作?我不知道怎么做,这是我第一次遇到这种情况。我只是想寻求帮助我想
sqrt(pow(piLeibT-(4.0*piWallis),2))>.001总是正确的。你试过调试吗?你知道怎么做吗?我真的不知道怎么做。我一直在使用类似于我代码其他部分的条件,这是唯一一次它不起作用,你应该学会如何调试。通过每次迭代检查变量的值。通过条件观察代码流。与你自己的纸质计算相比,它应该如何进行。如果你不学会调试,你将注定要问这样的问题,直到时间的尽头。你有关于教程或什么的链接吗?谢谢你,你可以在网络搜索中输入明显的关键词。有趣的是,似乎有数百万本关于编程语言的书。但是教你如何调试的好书在哪里呢。我确实感觉到你的痛苦。即使没有调试器,也可以通过将printf语句放入代码中并观察其位置和值来进行调试。无论如何,学习调试是你现在的首要任务。祝你好运!:-)
int main(void){

    int opcion=0, contLeib, banderaLeib, contWallis, bandWallis;

    float piLeib=0.0, sumaLeib=0.0, piLeibT=3.1415, piWallis=1.0, sumaWallis=0.0, nom, numWallis, denWallis, doble, sumaMachin=0.0, restaMachin=0.0;

    bandWallis=1;
    doble=1.0;
    piWallis=1.0;
    sumaMachin=0.0;
    restaMachin=0.0;
    contWallis=1;

    while(sqrt(pow(piLeibT-(4.0*piWallis), 2))>.001){
        if((contWallis%2)!=0){
            if(bandWallis==1){

                doble=contWallis*1.0;

                sumaMachin= sumaMachin + 1/(doble*pow(5,doble));
                restaMachin= restaMachin + 1/(doble*pow(239,doble));
                bandWallis=0;

            } else {
                sumaMachin= sumaMachin - 1/(doble*pow(5,doble));
                restaMachin= restaMachin - 1/(doble*pow(239,doble));
                bandWallis=1;
            }

            contWallis++;
            piWallis= 4.0 * (sumaMachin-restaMachin);
        }

       else{

         contWallis++;
       }
    }

    nom = piWallis*4.0;
    printf("\n%f", nom);
    return 0;
}