首页 > 其他分享 >求最大值(函数模板)

求最大值(函数模板)

时间:2023-05-05 21:24:24浏览次数:33  
标签:函数 int 最大值 break Time Date 100 day 模板

一、问题描述:

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

要求设计一个函数模板

template <class T>

T 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

二、代码实现:

 

  1 #include <iostream>
  2 using namespace std;
  3 class Time {
  4 private:
  5     int hh, mm, ss;
  6 public:
  7     Time(){}
  8     Time(int h, int m, int s)
  9     {
 10         hh = h;
 11         mm = m;
 12         ss = s;
 13     }
 14     friend int operator -(Time& t1, Time& t2);
 15     friend bool operator >(Time& t1, Time& t2);
 16     friend ostream& operator <<(ostream& out, Time &t);
 17 };
 18 int operator -(Time& t1, Time& t2)
 19 {
 20     int at1, at2;
 21     at1 = t1.hh * 3600 + t1.mm * 60 + t1.ss;
 22     at2 = t2.hh * 3600 + t2.mm * 60 + t2.ss;
 23     if (at1 - at2 > 0)
 24         return 1;
 25     else
 26         return 0;
 27 }
 28 bool operator >(Time& t1, Time& t2)
 29 {
 30     if(t1-t2>0)
 31         return true;
 32     else
 33         return false;
 34 }
 35 ostream& operator <<(ostream& out, Time& t)
 36 {
 37     out << t.hh << " " << t.mm << " " << t.ss;
 38 }
 39 class Date {
 40 private:
 41     int year, month, day;
 42 public:
 43     Date(){}
 44     Date(int y, int m, int d)
 45     {
 46         year = y;
 47         month = m;
 48         day = d;
 49     }
 50     friend bool operator >(Date& d1, Date& d2);
 51     friend ostream& operator <<(ostream& out, Date& d);
 52 };
 53 bool operator >(Date& d1, Date& d2)
 54 {
 55     int ad1, ad2;
 56     ad1 = d1.year * 365 + d1.month * 30 + d1.day;
 57     ad2 = d2.year * 365 + d2.month * 30 + d2.day;
 58     if (ad1 > ad2)
 59         return true;
 60     else
 61         return false;
 62 }
 63 ostream& operator <<(ostream& out, Date& d)
 64 {
 65     out << d.year << " " << d.month << " " << d.day;
 66 }
 67 template <class T>
 68 T maxn(T x[], int len)
 69 {
 70     T max = x[0];
 71     for (int j = 1; j < len; j++)
 72     {
 73         if (x[j] > max)
 74         {
 75             max = x[j];
 76         }
 77     }
 78     cout << max << endl;
 79     return max;
 80 }
 81 int main()
 82 {
 83     int ty;
 84     cin >> ty;
 85     int Array[100];
 86     double douArray[100];
 87     Time timeArray[100];
 88     Date dateArray[100];
 89     int i;
 90     while (ty != -1)
 91     {
 92         switch (ty)
 93         {
 94         case 1:
 95             for (i=0;  ; i++)
 96             {
 97                 cin >> Array[i];
 98                 if(Array[i]==0)
 99                     break;
100             }
101             maxn(Array, i);
102             break;
103         case 2:
104             for (i=0; ; i++)
105             {
106                 cin >> douArray[i];
107                 if(douArray[i]==0)
108                     break;
109             }
110             maxn(douArray, i);
111             break;
112         case 3:
113             int h, m, s;
114             for (i=0; ; i++)
115             {
116                 cin >> h;
117                 if(h==0)
118                     break;
119                 cin>> m >> s;
120                 timeArray[i]=Time(h, m, s);
121             }
122             maxn(timeArray, i);
123             break;
124         case 4:
125             int year, month, day;
126             for (i=0; ; i++)
127             {
128                 cin >> year;
129                 if(year==0)
130                     break;
131                 cin>> month >> day;
132                 dateArray[i] = Date(year, month, day);
133             }
134             maxn(dateArray, i);
135             break;
136         }
137         cin >> ty;
138     }
139     return 0;
140 }

 

标签:函数,int,最大值,break,Time,Date,100,day,模板
From: https://www.cnblogs.com/tljx-cen/p/17375378.html

相关文章

  • js基础---函数参数
    arguments:arguments不是真正的数组所以无法使用数组的方法可变参数:可变参数可以和形参配合使用,可变参数在形参后面。......
  • Prometheus之sum_over_time函数
    一、sum_over_timesum_over_time是Prometheus中用于计算指定时间段内时间序列数据的和的函数。它可以对单个时间序列或多个时间序列进行操作,并返回指定时间范围内时间序列值的总和。sum_over_time函数的语法如下:sum_over_time(rangevector-expression)其中,range指定......
  • eclipse注释模板及格式化模板导入方法
    格式化模板导入步骤  1.点击Window->Preference->Java->CodeStyle->Formatter2.点击右侧Import选择*.xml模板文件导入即可3.如果需要对模板进行修改,可点击Edit编辑即可4.模板示例:1.<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>2.<profilesvers......
  • 第十一篇——通达信指标公式编写常用函数(七)——SUMBARS以及MACD底背离(从零起步编写通
    内容提要:本文主要介绍通达信指标公式常用函数SUMBARS以及函数的应用,并且综合运用函数来编写MACD底背离。 一、SUMBARS函数简介SUMBARS这个函数名由SUM和BARS两部分组成,SUM在前一篇文章《第十篇——通达信指标公式编写常用函数(六)——SUM、IF(从零起步编写通达信指标公式系......
  • 第十二篇——通达信指标公式编写常用函数(八)——MAX、MIN、BETWEEN、ABS(从零起步编写通
    内容提要:本文介绍了通达信指标公式常用的数学函数MAX、MIN、BETWEEN、ABS,并用这些函数编写长上影线、均线粘合、平均真实波幅指标公式。 一、通达信常用数学函数简介 1、MAX函数 含义:求最大值使用方法:MAX(A,B),比较A和B的值的大小,获得较大值举例:MAX(C,O),表示......
  • 第九篇——通达信指标公式编写常用函数(五)——BARSLAST(从零起步编写通达信指标公式系列
    内容提要:本文主要介绍了编写通达信指标公式常用函数BARSLAST以及综合运用最近讲过的函数编写MACD零轴之上首次金叉选股公式。 一、BARSLAST函数简介含义:上一次条件成立到当前的周期数 使用方法:BARSLAST(X),上一次X条件成立到当前的周期数 举例:BARSLAST(CROSS(MA......
  • 第十篇——通达信指标公式编写常用函数(六)——SUM、IF(从零起步编写通达信指标公式系列)
    内容提要:本文主要介绍了编写通达信指标公式常用函数SUM、IF,并结合自带OBV指标熟悉函数的使用。 在《第五篇——通达信指标公式编写常用函数(一)——REF、MA、EMA、CROSS(从零起步编写通达信指标公式系列)》这篇文章中讲到均线相关的函数MA,这里简单复习一下。 MA(C,N):收盘价......
  • C#函数
    循环:int[]number=newint[]{1,2,3,4,5};foreach(intiinnumber)//把数组的值遍历出来赋值给i{numbers+=i;}把字符串根据“,”分割成数组stringnum="1,2,3,4,5,6";......
  • flask--app.add_url_rule()函数 和 类视图详解
    flask--app.add_url_rule()函数和类视图详解app.add_url_rule()函数在flask中,我们知道给一个函数添加url的时候,只需要使用装饰器@app.route('')装饰对应的函数就可以了。为什么这个装饰器就可以给函数视图添加url规则呢?查看app.route()源码发现,这个装饰器在里面调用的另外一......
  • oracle比较大小函数greatest与least
    目录oracle比较大小函数greatest与least1、greatest函数取最大值2、least函数取最小值oracle比较大小函数greatest与least比较出最大或者最小值的函数,null为最大或最小的值。语法:select函数名(value_1,value_2,...,value_n)fromdual;1、greatest函数取最大值select......