作者lalawolala (教練我想哭哭)
看板C_and_CPP
標題[問題] 判斷錯誤??
時間Fri Feb 20 00:24:21 2009
我想計算兩個座標 x1 y1 和 x2 y2 的距離是否大於半徑
是的話印出加入成功 否的話印出加入失敗
在這邊設的半徑為 3
根據距離函式算出來的也是3 不知道為啥怎麼改都還是加入失敗
改成小於等於半徑印出加入成功 大於印出加入失敗也都是一樣
想請問一下哪邊出問題了嗎
非常感謝 <(_ _)>
#include <cstdlib>
#include <iostream>
#include <math.h>
#define radius 3
using namespace std;
bool check_its_point(double , double , double , double );
double distance(double , double , double , double );
int main(int argc, char *argv[])
{
// 8.24499, -0.98998 要輸入的數值 與 6, 1比較
// 5.75501, 3.98998 要輸入的數值 與 6, 1比較
// 7.47141, -1.61438 要輸入的數值 與 6, 1比較
if( check_its_point(5.75501, 3.98998 ,6 ,1 ) == true)
{
cout << "加入成功" << endl;
}
else
{
cout << "加入失敗" << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
bool check_its_point(double x1, double y1, double x2, double y2)
{
double r = radius;
cout << distance(x1, y1, x2, y2 ) << endl;
if( distance(x1, y1, x2, y2 ) > r )
{
cout << x1 << "," << y1 << "到" << x1 << "," << y2 << "距離大於" << r <<" 不存入" << endl;
//cout << x1 << "," << y1 << "到" << x2 << "," << y2 << "距離小於" << r <<" 存入" << endl;
return false;
}
return true;
}
double distance(double x1, double y1, double x2, double y2)
{
double distance = 0;
distance = sqrt( pow((x2 - x1), 2) + pow((y2 - y1), 2));
cout << "距離 = " << distance << endl;
return distance;
}
--
柏油->Two-Face ◢~
你想作什麼? ◢█ ██~ ● 正面就炸你
放開那女孩! ◢ ≡ ◥◣ \ 反面炸你家
▔▔▔▔▔▔▔▔▔ ◣ ▔▔ -◎-⊙- / ◤
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ -皿 ╭▌ 有時正氣凜然
20080722 pm 18:20左右 ψQSWEET ◣ ︶ ◤ 目 有時卻兇猛霸道
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.128.207
1F:推 plover:double精準度的問題?! 02/20 00:47
2F:推 tsaiminghan:同上 02/20 01:00
3F:→ lalawolala:是喔 @_@ 請問怎麼改可以讓他正常判斷哩? 試半天還是錯 02/20 01:01
4F:推 tsaiminghan:我沒看你的碼不過如果用double時,不能用==來比較 02/20 01:06
5F:→ tsaiminghan:之前看的方式是類似abs(a-b) < 0.0000001之類的方式 02/20 01:07
6F:→ tsaiminghan:看來不是這個問題 02/20 01:13
7F:→ tsaiminghan:check_its_point似乎只回傳true耶? 02/20 01:15
8F:→ tsaiminghan:你的return false是真的mark掉了? 02/20 01:16
9F:→ lalawolala:return false 是測試的時候忘記消掉 不過消掉後 02/20 11:43
10F:→ lalawolala:還是無法正常判斷 0.0 02/20 11:43
※ 編輯: lalawolala 來自: 210.240.186.16 (02/20 12:13)