首页 > 其他分享 >打卡 数据的最大值问题(重载+函数模板)

打卡 数据的最大值问题(重载+函数模板)

时间:2023-05-08 23:57:26浏览次数:40  
标签:int double cin a1 b1 重载 打卡 c1 模板

两个类如下设计:类Time有三个数据成员,hh,mm,ss,分别代表时,分和秒,并有若干构造函数和一个重载-(减号)的成员函数。类Date有三个数据成员,year,month,day分别代表年月日,并有若干构造函数和一个重载>(<)(大于号或者小于号)的成员函数。

要求设计一个函数模板

template <class T>

double maxn(T x[], int len);

对int,float,time和date或者其他类型的数据,返回最大值。

main主函数有如下变量的定义:

int intArray[100];

double douArray[100];

Time timeArray[100];

Date dateArray[100];

其中,hh = 3600 ss, mm = 60 ss, year = 365 day, month = 30 day,对于Time和Date类型,数据在转换成ss或者day后进行运算。

输入格式:

每行为一个操作,每行的第一个数字为元素类型,1为整型元素,2为浮点型元素,3为Time类型,4为Date类型,若为整型元素,接着输入整型数据,以0结束。若为浮点型元素,接着输入浮点型数据,以0结束。若为Time型元素, 输入Time型数据(hh1 mm1 ss1 hh2 mm2 ss2),以0结束。若为Date型数据,输入Date型数据(year1 month1 day1 year2 month2 day2),以0结束。输入-1时表示全体输入结束。

输出格式:

对每次输入,输出一个最大值。

样例输入:

1 4 5 9 3 7 0

2 4.4 5.5 6.9 3.2 2.7 0

3 18 21 22 18 20 31 18 21 49 0

4 2013 5 14 2013 5 15 2013 4 1 0

-1

样例输出:

9

6.9

18 21 49

2013 5 15

思路:通过设置友元函数实现<<运算符重载实现时间的输出,函数模板实现求最大值,通过布尔返回值

      来判断循环条件是否成立。

代码实现:

#include<cmath>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<iomanip>
#include<iostream>
using namespace std;
typedef long long ll;
class Time
{
public :
void setx(double a1,double b1,double c1)
{
h=a1;
m=b1;
s=c1;
}
bool operator >(Time b)
{
double sum1,sum2;
sum1=h*3600+m*60+s;
sum2=b.h*3600+b.m*60+b.s;
if(sum1>sum2)
{
return true;
}
else
return false;
}
friend ostream& operator <<(ostream&os ,Time&);
private:
double h,m,s;
};
ostream& operator <<(ostream&os,Time&a)
{
os<<a.h<<" "<<a.m<<" "<<a.s;
}
class Date{
public :
void setx(double a1,double b1,double c1)
{
h=a1;
m=b1;
s=c1;
}
bool operator >(Date b)
{
double sum1,sum2;
sum1=h*365+m*30+s;
sum2=b.h*365+b.m*30+b.s;
if(sum1>sum2)
{
return true;
}
else
return false;
}
friend ostream& operator <<(ostream& ,Date&);
private:
double h,m,s;
};
ostream& operator <<(ostream&os ,Date&a){
os<<a.h<<" "<<a.m<<" "<<a.s;
}
template <class T>
double dist(T a[],int n){
T maxx=a[0];
for(int i=1;i<n;i++){
if(a[i]>maxx){
maxx=a[i];
}
}
cout<<maxx<<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;
}

dist(intArray,b);
}
else if(n==2){
double a;int b=0;
cin>>a;
while(a){
douArray[b]=a;
b++;
cin>>a;
}
dist(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++;
}
dist(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++;
}
dist(dateArray,b);
}
cin>>n;
}

return 0;
}

标签:int,double,cin,a1,b1,重载,打卡,c1,模板
From: https://www.cnblogs.com/qmz-znv2/p/17383551.html

相关文章

  • 每天打卡一小时 第二十二天
    【CPP0029】以圆类Circle及立体图形类Solid为基础设计圆锥类Cone分数 10全屏浏览题目切换布局作者 C++多态编程单位 石家庄铁道大学以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生圆锥类Co......
  • 自减运算符重载
    #include<iostream>usingnamespacestd;classpoint{friendostream&operator<<(ostream&cout,pointp);private:intx;public:point(){x=2;}point(inta){x=a;}pointoperator--(int){......
  • 模板类
    1、复数类Complex有两个数据成员:a和b,分别代表复数的实部和虚部,并有若干构造函数和一个重载-(减号,用于计算两个复数的距离)的成员函数。要求设计一个函数模板template<classT>doubledist(Ta,Tb)对int,float,Complex或者其他类型的数据,返回两个数据的间距。以上类名和函......
  • 模板层
    模板层一、模板简介在刚刚介绍完的视图层中我们提到,浏览器发送的请求信息会转发给视图进行处理,而视图在经过一系列处理后必须要有返回信息给浏览器。如果我们要返回html标签、css等数据给浏览器进行渲染,我们可以在视图中这么做fromdjango.shortcutsimportHttpResponseimpor......
  • 5.8打卡
     二、设计思路 三、代码实现#include<bits/stdc++.h>usingnamespacestd;intmain(){inti;doublemoney=0.0;for(i=0;i<5;i++)money=(money+1000.0)/(1+0.0063*12);printf("Ó¦´æÈëµÄÇ®ÊýΪ£º%0.2f\n",money);} ......
  • 5月8日打卡
    例4-8题目描述:使用联合体保存成绩信息,并且输出代码部分:#include<string>#include<iostream>usingnamespacestd;classExamInfo{private:stringname;enum{GRADE,PASS,PERCENTAGE}mode;union{chargrade;......
  • 打卡1
    问题描述:编写一个计算机个人所得税的程序,要求输入收入金额后,能够输出个人所得税,征收如下:起始点为3500元,征收3%1500~4500元,征收10%4500~9000元,征收20%9000~35000元,征收25%35000~55000元,征收30%55000~80000元,征收35%超出80000元,征收45%流程图:  伪代码:start[6]={0,150......
  • 编程打卡: C++ 语言程序设计
    编程打卡:C++语言程序设计#include<iostream>#include<array>usingnamespacestd;intmain(){intn;cin>>n;array<double,100000>scores;for(inti=0;i<n;i++){cin>>scores[i];}......
  • 第十四天打卡
    一、问题描述一个口袋中放有12个球,已知其中3个是红色,3个是白色,6个是黑色,先从中任取8个,问共有多少种可能的颜色搭配?二、设计思路1.设m,n分别记录取出红的和白的,用8-m-n表示黑的;2.利用二重循环依次求出满足条件的m,n;3.在设计if条件满足8-m-n<=6,然后输出结果。三、程序流......
  • 2023.5.8编程一小时打卡
    一、问题描述:初始化int类型数组date1[]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20},应用本章的直接插入排序模板进行排序,对此函数模板稍作修改,加入输出语句,在每一个待排序元素后显示整个数组,观察排序过程中数据的变化,加深对插入排序算法的理解。二、解题思路:首先,定......