作者ManInBlackXD (小的)
看板C_and_CPP
标题[问题] Babylonian algorithm
时间Fri Oct 9 21:23:55 2009
刚刚写了一个程式
是关於猜平方根的程式
如下
#include<iostream>
using namespace std;
int main()
{
//宣告要用到的变数
int n;
double r,guess;
const double RATE=0.01;
char ans;
do
{
//介绍程式
cout<<"This program is about The Babylonian algorithm to compute the square root of a number n."<<endl;
//输入资料
cout<<"Enter a number n: ";
cin>>n;
cout<<"Enter your initial guess: ";
cin>>guess;
//计算
while(((guess+r)/2-guess)/(guess+r)/2>RATE)
{
r=n/guess;
guess=(guess+r)/2;
}
//输出资料
cout<<"The answer close to the square of number n is:"<<guess<<endl;
//问是否要继续
cout<<"Do you want to continue?Press y for yes,n for no: ";
cin>>ans;
}while(ans=='y'||ans=='Y');
//结束
return 0;
}
但是问题来了
它只算一次就停了...
比如说我打n=100 guess=50
它显示26
明明可以在算下去阿但他就是停了= =
请问是哪里出了问题呢
请高手帮忙解答
感激
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.63.2
1F:→ bleed1979:应该是吃到回车了 在cin>>guess;後加上cin.get()试试 10/09 22:40
2F:推 snowlike:r没有初值 10/09 22:41
3F:→ bleed1979:楼上是对的 另外原po程式码公式也打错了 刚玩了一下 10/09 23:00
4F:→ bleed1979:r=n/guess; // while外面 10/09 23:00
5F:→ bleed1979:while(((guess+r)/2-r)/((guess+r)/2)>RATE) 10/09 23:01
6F:→ bleed1979:{ 10/09 23:01
7F:→ bleed1979: r=n/guess; 10/09 23:01
8F:→ bleed1979: guess=(guess+r)/2; 10/09 23:01
9F:→ bleed1979:} 10/09 23:01
10F:→ ManInBlackXD:感谢ok噜 10/10 01:29