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
#include <iostream>
#include<math.h>
using namespace std;
template <class T>
double dist(T a,T b)
{
return (a-b>0)?(a-b):(b-a);
}
class Complex
{
private:
double a,b;
public:
Complex(double x=0,double y=0)
{
a=x;
b=y;
}
double operator -(Complex &n)
{
return sqrt((a-n.a)*(a-n.a)+(b-n.b)*(b-n.b));
}
};
int main()
{
int type;
cin>>type;
while(type>0)
{
switch(type)
{
case(0): break;
case(1):
int a,b;
cin>>a>>b;
cout<<dist(a,b)<<endl;
break;
case(2):
double c,d;
cin>>c>>d;
cout<<dist(c,d)<<endl;
break;
case(3):
double a1,a2,b1,b2;
cin>>a1>>b1>>a2>>b2;
Complex c1(a1,b1);
Complex c2(a2,b2);
cout<<dist(c1,c2)<<endl;
break;
}
cin>>type;
}
return 0;
}
#include<iostream>
using namespace std;
class Time
{
public :
void setx(double a1,double b1,double c1)
{
hh=a1;
mm=b1;
ss=c1;
}
bool operator >(Time b)
{
double sum1,sum2;
sum1=hh*3600+mm*60+ss;
sum2=b.hh*3600+b.mm*60+b.ss;
if(sum1>sum2)
{
return true;
}
else
return false;
}
friend ostream& operator <<(ostream&out ,Time&a)
{
out<<a.hh<<" "<<a.mm<<" "<<a.ss;
return out;
}
private:
double hh,mm,ss;
};
class Date{
public :
void setx(double a1,double b1,double c1)
{
y=a1;
m=b1;
d=c1;
}
bool operator >(Date b)
{
double sum1,sum2;
sum1=y*365+m*30+d;
sum2=b.y*365+b.m*30+b.d;
if(sum1>sum2)
{
return true;
}
else
return false;
}
friend ostream& operator <<(ostream &out ,Date &a)
{
out<<a.y<<" "<<a.m<<" "<<a.d;
return out;
}
private:
double d,m,y;
};
template <class T>
double maxn(T x[],int len){
T max=x[0];
for(int i=1;i<len;i++){
if(x[i]>max){
max=x[i];
}
}
cout<<max<<endl;
return 0;
}
int main() {
int n;
cin>>n;
int intArray[100];
double douArray[100];
Time timeArray[100];
Date dateArray[100];
while(n!=-1){
if(n==1){
int a,b=0;
cin>>a;
while(a){
intArray[b]=a;
b++;
cin>>a;
}
maxn(intArray,b);
}
else if(n==2){
double a;int b=0;
cin>>a;
while(a){
douArray[b]=a;
b++;
cin>>a;
}
maxn(douArray,b);
}
else if(n==3){
double a1,b1,c1;int b=0;
cin>>a1;
while(a1){
cin>>b1>>c1;
timeArray[b].setx(a1,b1,c1);
cin>>a1;
b++;
}
maxn(timeArray,b);
}
else if(n==4){
double a1,b1,c1;int b=0;
cin>>a1;
while(a1){
cin>>b1>>c1;
dateArray[b].setx(a1,b1,c1);
cin>>a1;
b++;
}
maxn(dateArray,b);
}
cin>>n;
}
return 0;
}
翻译
搜索
复制
标签:return,int,double,cin,a1,b1,实验报告 From: https://www.cnblogs.com/wwj1/p/17373704.html