作者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
→ bleed1979:應該是吃到回車了 在cin>>guess;後加上cin.get()試試 10/09 22:40
推 snowlike:r沒有初值 10/09 22:41
→ bleed1979:樓上是對的 另外原po程式碼公式也打錯了 剛玩了一下 10/09 23:00
→ bleed1979:r=n/guess; // while外面 10/09 23:00
→ bleed1979:while(((guess+r)/2-r)/((guess+r)/2)>RATE) 10/09 23:01
→ bleed1979:{ 10/09 23:01
→ bleed1979: r=n/guess; 10/09 23:01
→ bleed1979: guess=(guess+r)/2; 10/09 23:01
→ bleed1979:} 10/09 23:01
→ ManInBlackXD:感謝ok嚕 10/10 01:29