1、复数类Complex有两个数据成员:a和b, 分别代表复数的实部和虚部,并有若干构造函数和一个重载-(减号,用于计算两个复数的距离)的成员函数。 要求设计一个函数模板
template < class T >
double dist(T a, T b)
对int,float,Complex或者其他类型的数据,返回两个数据的间距。
以上类名和函数模板的形式,均须按照题目要求,不得修改
输入格式:
每一行为一个操作,每行的第一个数字为元素类型,1为整型元素,2为浮点型元素,3为Complex类型,若为整型元素,接着输入两个整型数据,若为浮点型元素,接着输入两个浮点型数据,若为Complex型元素,输入两个Complex型数据(a1 b1 a2 b2),输入0时标志输入结束。
输出格式:
对每个输入,每行输出一个间距值。
输入样例:
1 2 5
3 2 4 5 9
2 2.2 9.9
0
输出样例:
3
5.83095
7.7
1 1.#include<iostream> 2 #include<math.h> 3 using namespace std; 4 template <class T> 5 double dist(T a,T b){ 6 double distance=a-b; 7 return fabs(distance); 8 } 9 class Complex{ 10 private: 11 double real; 12 double image; 13 public: 14 Complex(double r=0,double i=0){ 15 real=r; 16 image=i; 17 } 18 double operator-(Complex p){ 19 double distance=0; 20 double t=(real-p.real)*(real-p.real)+(image-p.image)*(image-p.image); 21 distance=sqrt(t); 22 return distance; 23 } 24 }; 25 int main(){ 26 int ch=0; 27 while (cin>>ch){ 28 if(ch==0) 29 break; 30 else if(ch==1){ 31 int a,b,distance; 32 cin>>a>>b; 33 distance=dist(a,b); 34 cout<<distance<<endl; 35 } 36 else if(ch==2){ 37 float a,b; 38 double distance; 39 cin>>a>>b; 40 distance=dist(a,b); 41 cout<<distance<<endl; 42 } 43 else if(ch=3){ 44 double a,b,c,d,distance; 45 cin>>a>>b>>c>>d; 46 Complex p1(a,b),p2(c,d); 47 distance=dist(p1,p2); 48 cout<<distance<<endl; 49 } 50 } 51 return 0; 52 }
标签:real,distance,dist,double,image,Complex,模板 From: https://www.cnblogs.com/liubingyu/p/17383323.html