» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] 一个c++程序,求指点,送祭扫

利用格里高利公式编写程序求π。
                π/4=1-1/3+1/5-1/7+……
直到最后一项的值小于10-6为止。

#include <iostream.h>
void main()
{
        int a,b,i;
        double x=0;
        for (a=1,b=1,i=0; (1/b)>0.00001; b=b+2,a=b*(-1)^i,i++)
        {
                x=x+1/a;
        }       
        cout<<x;
}
我是这样想的, (1/b)>0.00001用来控制精度,因为b恒正。
b=b+2,a=b*(-1)^i,i++。这句用来控制a的变化是1,-3,5,-7.。。。
然后做x,感觉挺对的,但是输出结果是1,。
刚学,求指导。

[ 本帖最后由 ylara 于 2012-11-7 22:07 编辑 ]


TOP

我这里的加减反转变量就是(-1)^i,i++啊
引用:
原帖由 ffcactus 于 2012-11-7 21:34 发表
posted by wap, platform: iPhone

首先你的程序不直观。for 寻坏最好用一个步进2的整数记数器,同时用作分母。循环中设置加减符号反转变量。这样你也无需考虑正负就能得到循环退出的条件。
这样写的程序别人知道这 ...



TOP

。。。我的错我的错
引用:
原帖由 lvcha 于 2012-11-7 22:43 发表
a是int,除了1分之一是1以外其它都是0啊

不好意思c++还是中学课外班学的早忘了。

按java来说你 改成 x+1.0/(double)a就好了

话说你的程序是为了不让人读懂么?
这么写太不专业了。


TOP

发新话题
     
官方公众号及微博