作者fireslayer (fireslayer)
看板C_and_CPP
標題[問題] 新手又印不出需要的結果again
時間Mon Mar 15 22:45:30 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
都印出0........
希望得到的正確結果:
兩點距離
程式跑出來的錯誤結果:
0
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Microsoft Visual Studio 2010 Release Canditate
有問題的code: (請善用置底文標色功能)
// 計算兩點距離.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdlib.h"
#include "math.h"
int distance(double x1, double y1, double z1, double x2, double y2, double
z2);
int distance(double x1, double y1, double z1, double x2, double y2, double z2)
{
return sqrt( pow(x1-x2,2) + pow(y1-y2,2) + pow(z1-z2,2));
}
int _tmain(int argc, _TCHAR* argv[])
{
double xi1;
double yi1;
double zi1;
double xi2;
double yi2;
double zi2;
printf("計算兩點距離<三維>\n");
printf("請輸入第一個點:");
scanf_s("%lf%lf%lf",&xi1 ,&yi1 ,&zi1);
printf("請輸入第二個點:");
scanf_s("%lf%lf%lf",&xi2 ,&yi2 ,&zi2);
printf("兩點距離為%lf\n",distance(xi1, yi1, zi1, xi2, yi2, zi2));
system("pause");
return 0;
}
補充說明:
先謝謝大家<我自己都覺得我問題有點多= =是新手的關係嗎?>
debugger沒有問題,變數也吃進去了,應該是distance函式裡面的問題,可是我
不知道在哪
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.40.80
→ jhchou:distance return type int改double吧 03/15 22:50
推 charlie0228:還是少用pow吧,因為總是會出現怪怪的問題... 03/15 22:51
→ fireslayer:喔喔....原來前面的那個也有差喔~~ 03/15 22:56
→ fireslayer:謝謝jhchou大 03/15 22:56
→ fireslayer:請問大大pow會出現什麼樣的問題? 03/15 23:03
→ fireslayer:小弟以後可以多加注意....... 03/15 23:03
→ charlie0228:我記得是浮點數誤差的樣子= = 03/15 23:10
推 VictorTom:基本上就是有誤差, 因為記得pow是用一些數值方法來求值 03/15 23:18
→ VictorTom:的, 當然浮點數運算與儲存的精確度問題也是存在的:) 03/15 23:19
→ charlie0228:解ACM時常常掛在這誤差之中= = 03/15 23:26