做一道题编译出现问题

apostlecn 2009-01-07 09:13:49
做一道求PI的习题,下面是我自己写的代码

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
double pi=0;
int n;
double sum;
cin>>n;
for(int i=1;i<=n;i++){
while(i%2!=0)
sum=4/(2i-1);
sum=(-4)/(2i-1);

pi+=sum;
}
cout<<"Pi ="<<pi<<endl;
system("pause");
return 0;
}

编译的时候出现了15 C:\Dev-Cpp\x\exam2_54.cpp cannot convert `int __complex__' to `double' in assignment 这样的错误,请高手指点一下
...全文
195 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangchao918628 2009-01-07
  • 打赏
  • 举报
回复
那是你算法的问题当输入大于2的时候全为0了,也就是和输入2相同,输入1时候为4
apostlecn 2009-01-07
  • 打赏
  • 举报
回复
谁还在啊?帮忙看一下
apostlecn 2009-01-07
  • 打赏
  • 举报
回复
谢谢楼上朋友,但运行的时候还是有问题,不论输入N等于多少,输出都是3,真的很奇怪啊
shilei_815 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuxiaoluck 的回复:]
#include <iostream>
using namespace std;

//using std::cout;
//using std::cin;
//using std::endl;

int main(){
double pi=0;
int n;
double sum;
cin>>n;
for(int i=1;i <=n;i++){
if(i%2!=0) //while会进入死循环
//sum=4/(2i-1)惯性思维*是乘号,不可遗漏
sum=4/(2*i-1);
else
sum=(-4)/(2*i-1);
pi+=sum;
}
cout <<"Pi =" <<pi <<endl;
system("pause");
return 0;
}
[/Quote]
UP,楼上好眼里!
sagegz 2009-01-07
  • 打赏
  • 举报
回复
基本功很重要.

#include <iostream>
using namespace std;

//using std::cout;
//using std::cin;
//using std::endl;

int main(){
double pi=0;
int n;
double sum;
cin>>n;
for(int i=1;i <=n;i++){
if(i%2!=0) //while会进入死循环
//sum=4/(2i-1)惯性思维*是乘号,不可遗漏
sum=4/(2*i-1);
else
sum=(-4)/(2*i-1);
pi+=sum;
}
cout <<"Pi =" <<pi <<endl;
system("pause");
return 0;
}
飞梦 2009-01-07
  • 打赏
  • 举报
回复
DEV C++ 认为 2i 是一个复数类型;
4/(2 * i -1) -> 4.0/(2 * i -1)
mifeixq 2009-01-07
  • 打赏
  • 举报
回复
2i -> 2*i
nullah 2009-01-07
  • 打赏
  • 举报
回复

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
double pi=0;
int n;
double sum;
cin>>n;
for(int i=1;i<=n;i++)
{
if(i%2!=0)
{
sum = 4/(2*i-1); ////2i---->2*i
}
sum = (-4)/(2*i-1);

pi+=sum;
}
cout << "Pi = " << pi << endl;
system("pause");
return 0;
}

改了个错误 另外楼主while循环 那不是一直要死循环
VS2005下运行OK
CPlusPlusFans 2009-01-07
  • 打赏
  • 举报
回复
mark
sofa120 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shilei_815 的回复:]
算法有问题,自己DEBUG好好检查一下哪出问题了吧!!!!!!这样才会有进步啊!
[/Quote]

程序有问题,,自己先调试下,小问题自己肯定能检查出来的。。。。。。
sofa120 2009-01-07
  • 打赏
  • 举报
回复
当i = 1;
sum=4/(2*i-1);(4.000000)
pi = 4.0000000
当i = 2;
sum=(-4)/(2*i-1);(-1.0000000)
pi = 3.0000000
之后的
当i = 3;
sum=4/(2*i-1);(0.000000)因为int。4/5 = 0;
当i = 4;
sum=(-4)/(2*i-1);(0.0000000)
再之后的不用说了吧。。。。。

帮你改了下。。。
数字相差大的结果变化才比较明显


#include <iostream>
using namespace std;

//using std::cout;
//using std::cin;
//using std::endl;

int main(){
double pi=0;
int n;
double sum;
cin>>n;
for(int i=1;i <=n;i++){
if(i%2!=0)
sum=4/(2*(double)i-1);
else
sum=(-4)/(2*(double)i-1);
pi+=sum;
}
cout <<"Pi =" <<pi <<endl;
system("pause");
return 0;
}
sallan 2009-01-07
  • 打赏
  • 举报
回复
becafully
shilei_815 2009-01-07
  • 打赏
  • 举报
回复
算法有问题,自己DEBUG好好检查一下哪出问题了吧!!!!!!这样才会有进步啊!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧