标题:公式求圆周率问题的程序求指错!
只看楼主
mengni0219
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2013-10-18
结帖率:80%
已结贴  问题点数:5 回复次数:4 
公式求圆周率问题的程序求指错!
#include<iostream>
using namespace std;
int main()
{
  double pi=0,i=1,j=1;
  do
  {
      pi=pi+j*1/i;
      i=i+2;
      j=j*(-1);
  }
  while(i>1.0e8);
  cout<<pi;
  system("pause");
    return 0;   
}
程序运行结果只显示“1”,不知道为什么,应该怎么修改?
搜索更多相关主题的帖子: 圆周率 double 
2013-10-25 10:56
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
while(i>1.0e8);
这个语句不对  貌似应该是 while(???>1.0e-8);

但是你的求π公式好像不对

[ 本帖最后由 wp231957 于 2013-10-25 11:09 编辑 ]

DO IT YOURSELF !
2013-10-25 11:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
while(i>1.0e8); 应该是 while(i<1.0e8); 吧
而且你这样求的不是pi,而是pi/4,所以结果还得乘以4
2013-10-25 11:12
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:3 
以下是引用rjsp在2013-10-25 11:12:34的发言:

while(i>1.0e8); 应该是 while(i<1.0e8); 吧
而且你这样求的不是pi,而是pi/4,所以结果还得乘以4
乘以4就对了
程序代码:
#include<iostream>
using namespace std;
int main()
{
    double pi=0.0,i=1.0,j=1.0;
    do
    {
        pi=pi+(j*1)/i;
        i=i+2;
        j=j*(-1);
    }
    while(abs(j/i)>1.0e-8);
    cout<<pi*4<<endl;
    system("pause");
    return 0;  
}
结果等于3.14159


DO IT YOURSELF !
2013-10-25 11:19
mengni0219
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2013-10-18
得分:0 
回复 3楼 rjsp
十分感谢!我刚开始学习C++,好多东西都不熟悉,有你们的帮助真的让我十分高兴!以后多向你学习!
2013-10-27 10:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-422488-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.414214 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved