作者:唐瑄星 | 来源:互联网 | 2023-09-16 09:04
7-2利用函数模板,求若个类型数中的最大值(50point(s))要求设计一个函数模板:templateTMax(Tx[],intlen)可以对int、float、Time(时间类
7-2 利用函数模板,求若个类型数中的最大值 (50 point(s))
要求设计一个函数模板:
template
T Max(T x[],int len)
可以对int、float、Time(时间类)和Date(日期类)或其他基本类型的数据求最大值。 主函数有如下数据成员: int intArray[100]; double douArray[100]; Time timeArray[100]; date dateArray[100]; 【提示】:定义时间类:Time,其含有三个数据成员:hours、minutes、seconds,分别代表时、分和秒,并定义构造函数、输出函数及重载的>(或<)运算符函数等成员函数。 定义日期类:Date,其含有三个数据成员:year、month、day,分别代表年、月、日,定义构造函数、重载的>(或<)运算符函数等成员函数。
输入格式:
每行为一个操作,每行的第一个数字为元素类型,1为整型元素,2为浮点型元素,3为Time类型,4为Date类型。若为整型元素,接着输入整型数据,以0结束。若为浮点型元素,接着输入浮点型数据,以0结束。若为Time型元素, 输入Time型数据:hour1 month1 second1 hour2 month2 second2……,以0结束。若为Date型数据,输入Date型数据:year1 month1 day1 year2 month2 day2 ……,以0结束。输入-1时表示全体输入结束。
输出格式:
对每次输入,输出一个最大值。
输入样例:
在这里给出一组输入。例如:
4 2020 1 1 2012 5 11 2013 4 1 0
4 2020 1 1 2020 3 1 2020 12 1 0
3 18 21 11 23 34 56 2 56 59 0
1 4 5 9 3 7 0
2 2.7 3.2 6.9 4 5 0
1 7 3 9 5 4 0
1 0
2 0
3 0
4 0
-1
输出样例:
在这里给出相应的输出。例如:
2020/1/1
2020/12/1
23:34:56
9
6.9
9
0
0
0:0:0
0/1/1
收获
- 找最值元素,赋初值的时候,要把最大值设成数组中的第一个,然后再更改。
#include
using namespace std;
class Time{
private:
int hours,minutes,seconds;
public:
Time(int hours=0,int minutes=0,int seconds=0):hours(hours),minutes(minutes),seconds(seconds){ };
bool operator<(Time t){
if(hours<t.hours){
return true;
}else if(hours>t.hours){
return false;
}else if(minutes<t.minutes){
return true;
}else if(minutes>t.minutes){
return false;
}else if(seconds<t.seconds){
return true;
}else{
return false;
}
}
void output(){
cout<<hours<<":"<<minutes<<":"<<seconds<<endl;
};
}timeArray[100];
class Date{
private:
int hours,minutes,seconds;
public:
Date(int hours=0,int minutes=1,int seconds=1):hours(hours),minutes(minutes),seconds(seconds){ };
bool operator<(Date t){
if(hours<t.hours){
return true;
}else if(hours>t.hours){
return false;
}else if(minutes<t.minutes){
return true;
}else if(minutes>t.minutes){
return false;
}else if(seconds<t.seconds){
return true;
}else{
return false;
}
}
void output(){
cout<<hours<<"/"<<minutes<<"/"<<seconds<<endl;
};
}dateArray[100];
// class Date{
// private:
// int year,month,day;
// public:
// Date(int year=0,int mOnth=1,int day=1):year(year),month(month),day(day){};
// bool operator
// };
template<class T>
T Max(T x[],int len)
{
T max=x[0];
for(int i=1;i<len;i++){
if(max<x[i]){
max=x[i];
}
}
return max;
}
int main(){
int n,count;
int intArray[100];
double doubArray[100];
cin>>n;
while(n!=-1){
switch(n){
case 1:{
count=0;
int temp;
cin>>temp;
if(temp==0){
cout<<0<<endl;
cin>>n;
break;
}
while(temp!=0){
intArray[count++]=temp;
cin>>temp;
}
int max=Max(intArray,count);
cout<<max<<endl;
cin>>n;
break;
}
case 2:{
count=0;
double temp;
cin>>temp;
if(temp==0){
cout<<0<<endl;
cin>>n;
break;
}
while(temp!=0){
doubArray[count++]=temp;
cin>>temp;
}
double max=Max(doubArray,count);
cout<<max<<endl;
cin>>n;
break;
}
case 3:{
int hours,minutes,seconds;
Time temp;
count=0;
cin>>hours;
while(hours!=0){
cin>>minutes>>seconds;
temp=Time(hours,minutes,seconds);
timeArray[count++]=temp;
cin>>hours;
}
Time max=Max(timeArray,count);
max.output();
cin>>n;
break;
}
case 4:{
int hours,minutes,seconds;
Date temp;
count=0;
cin>>hours;
while(hours!=0){
cin>>minutes>>seconds;
temp=Date(hours,minutes,seconds);
dateArray[count++]=temp;
cin>>hours;
}
Date max=Max(dateArray,count);
max.output();
cin>>n;
break;
}
default:{
break;
}
}
}
}