求助:C++求两点之间的距离,没报错,但结果不对,请各位帮忙看一下

来源:百度知道 编辑:UC知道 时间:2024/05/23 11:33:10
#include<iostream>
#include<cmath>
using namespace std;
struct Point
{
double x[2];
double y[2];
double z[2];
};
double dis(Point p1,Point p2)
{
double n1,n2,n3,n;
n1=p1.x[0]-p2.x[1];
n2=p1.y[0]-p2.y[1];
n3=p1.z[0]-p2.z[1];
n=pow(n1,2)+pow(n2,2)+pow(n3,2);
return sqrt(n);
}
void main()
{
Point p1={1,1,1},p2={2,2,2};
cout<<"两点距离为:"<<dis(p1,p2)<<endl;
}
本来结果应该是:1.7320的.为什么是1.414....

#include<iostream>
#include<cmath>
using namespace std;
struct Point
{
double x;
double y;
double z;
};
double dis(Point p1,Point p2)
{
double n1,n2,n3,n;
n1=p1.x-p2.x;
n2=p1.y-p2.y;
n3=p1.z-p2.z;
n=pow(n1,2)+pow(n2,2)+pow(n3,2);
return sqrt(n);
}
void main()
{
Point p1={1,1,1},p2={2,2,2};
cout<<"两点距离为:"<<dis(p1,p2)<<endl;
}//你point里面有三个double不就行了么?每个point保存一个点的三维坐标,不需要搞double数组的。改过了,答案是正确的。

改成Point p1={1,1,1,1,1,1},p2={2,2,2,2,2,2}; 就可以了
不过你的程序很奇怪,为什么x、y、z的坐标要用多余的二维数组表示呢?