复数类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
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 template <class T> 5 double dist(T a,T b) 6 { 7 return fabs(a-b); 8 } 9 class Complex{ 10 private: 11 double real; 12 double imag; 13 public: 14 Complex(double r,double i):real(r),imag(i){} 15 friend double operator - (Complex &c1,Complex &c2) 16 { 17 int i,j; 18 i=c1.real-c2.real; 19 j=c1.imag-c2.imag; 20 return sqrt(i*i+j*j); 21 } 22 }; 23 int main() 24 { 25 int ty; 26 cin>>ty; 27 while(ty>0) 28 { 29 switch(ty) 30 { 31 case 1: 32 int x,y; 33 cin>>x>>y; 34 cout<<dist(x,y)<<endl; 35 break; 36 case 2: 37 double x1,y1; 38 cin>>x1>>y1; 39 cout<<dist(x1,y1)<<endl; 40 break; 41 case 3: 42 double a,b,c,d; 43 cin>>a>>b>>c>>d; 44 Complex c1(a,b); 45 Complex c2(c,d); 46 cout<<dist(c1,c2); 47 48 } 49 cin>>ty; 50 } 51 }
标签:练习题,real,ty,int,double,PTA,Complex,输入 From: https://www.cnblogs.com/Lyh3012648079/p/17378569.html