1 #include<iostream> 2 using namespace std; 3 #include<cmath> 4 //2017final函数模板 5 6 class Point 7 { 8 public: 9 //构造函数赋初值 10 Point(double a, double b, double c) :m_x(a), m_y(b), m_z(c) {} 11 //把重载函数声明为类的友元,可以访问类中的私有元素 12 //也可以不声明友元,直接把那三个坐标写到public 里面 13 friend double operator -(Point p1, Point p2); 14 private: 15 double m_x; 16 double m_y; 17 double m_z; 18 19 }; 20 //重载减号(-) 21 double operator -(Point p1, Point p2) 22 { 23 //空间内两点求距离 24 //sqrt计算开方 25 //pow double pow(double x, double y) 返回 x 的 y 次幂. 26 //p1.m_x - p2.m_x, 2.0) 返回两数差的2次方 27 return sqrt(pow(p1.m_x - p2.m_x, 2.0) + pow(p1.m_y - p2.m_y, 2.0) + pow(p1.m_z - p2.m_z, 2.0)); 28 } 29 //间距模板 30 template<class T1 , class T2> 31 double Distance(T1 a, T2 b) 32 { 33 return abs(a - b); //返回距离的绝对值 34 } 35 int main() 36 { 37 int n; //元素类型变量 38 cin >> n; 39 while (n!=0) 40 { 41 if (n == 1) //整型元素 42 { 43 int a, b; 44 cin >> a >> b; 45 cout << Distance(a, b) << endl; //调用模板函数,输出两点之间的距离 46 } 47 if (n == 2) //浮点型数据 48 { 49 float a, b; 50 cin >> a >> b; 51 cout << Distance(a, b) << endl; 52 } 53 if (n == 3) //point 类型 54 { 55 double a1, b1, c1, a2, b2, c2; 56 cin >> a1 >> b1 >> c1 >> a2 >> b2 >> c2; 57 Point p1(a1, b1, c1); 58 Point p2(a2, b2, c2); 59 cout <<Distance(p1, p2) << endl; 60 61 } 62 cin >> n; //输入0跳出while循环 63 } 64 return 0; 65 66 }
标签:p2,25,p1,Point,double,2023.5,pow,2.0 From: https://www.cnblogs.com/muzhaodi/p/17433226.html