首页 > 其他分享 >Problem F: 时间类的常量

Problem F: 时间类的常量

时间:2023-05-29 14:03:38浏览次数:45  
标签:const 常量 hour int second 时间 Time Problem minute


Home

Web Board

ProblemSet

Standing

Status

Statistics


Problem F: 时间类的常量


Time Limit: 4 Sec   Memory Limit: 128 MB

Submit: 2103  

Solved: 1715

[Submit][Status][Web Board]


Description



封装一个时间类Time,用于时间处理的相关功能,支持以下操作:



1. Time::Time()无参构造方法。



2. Time::Time(int,int,int)构造方法:传递时分秒的三个参数构造对象。



3. Time::Time(const T&)拷贝构造方法。



4. 成员读函数:



   Time::hour()  :返回Time的小时数;



   Time::minute():返回Time的分钟数;



   Time::second():返回Time的秒数。



5. 成员写函数:



   Time::hour(int)  :传参修改Time的小时数;



   Time::minute(int):传参修改Time的分钟数;



   Time::second(int):传参修改Time的秒数。



6. 对象整体读写方法:



   Time::setTime(int,int,int)方法:传递时分秒三个参数修改Time对象的时分秒数。该方法返回修改后的对象。



   Time::setTime(const T&)方法:传递一个参数修改Time对象的时分秒数。该方法返回修改后的对象。



   Time::getTime()方法:返回对象自身的引用。其实,t.getTime()即t。



   仅在Time类中的Time::getTime()方法实在是多余,在组合或者继承关系时才会有机会用到。



7. Time::inputTime()方法:按格式从标准输入读取数据修改Time对象的时分秒数值。该方法返回修改后的对象。



8. Time::showTime()方法:输出“hh:mm:ss”,不足两位的要前面补0。如果对象不是合法的时间,则输出“Time error”。



注意:为了保证Time类的常量对象能够正确的调用Time类的方法,那些不修改对象数据成员的函数都应该是常量成员函数,在返回对象自身的引用时也应返回常量引用。



你设计一个时间类Time,使得main()函数能够正确运行。



函数调用格式见append.cc。



append.cc中已给出main()函数。main()函数内容稍微繁复,仅为测试对象的各种调用情况。



Input



输入的第一个整数n,表示有n组测试数据,每组3个整数:hh,mm,ss,分别表示时、分、秒,其值都在int范围内。



Output



开始部分为由main()函数产生的固定输出,用于测试对象的某些方法的调用情况。输出“Test data output :”之后为测试数据对应的输出:



每组测试数据对应一组输出“hh:mm:ss”,不足两位的输出需要前面补0。如果输入的时间不合法,则输出“Time error”。格式见sample。



Sample Input



60 0 10 59 591 1 6023 0 023 59 5924 1 0



Sample Output



Constant test output :00:00:0001:02:03Time errorTest data output :00:00:0100:59:59Time error23:00:0023:59:59Time error



HINT



输出格式用头文件<iomanip>中流操作算子:



setw(w)   :设置数据的输出宽度为w个字符



setfill(c):设置用字符c作为填充字符






Append Code



append.cc,


[ Submit][Status][Web Board]


한국어<  中文 فارسی English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM
GPL2.0 2003-2011 HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin


#include <iostream>
#include <iomanip>
using namespace std;
class Time
{
private:
    int h,m,s;
public:
    Time():h(0),m(0),s(0){}
    Time(int hh,int mm,int ss) : h(hh),m(mm),s(ss){}
    Time(const Time &t)
    {
        h = t.h;m = t.m;s = t.s;
    }
public:
    Time &setTime(int hh ,int mm ,int ss)
    {
        h = hh;m = mm;s = ss;
        return* this;
    }
    Time &setTime(const Time & t)
    {
        h = t.hour();
        m = t.minute();
        s = t.second();
        return *this;
    }
   const Time &getTime()const
    {
        return *this;//passing 'const Time' as 'this' argument of 'const Time& Time::getTime()' discards qualifiers [-fpermissive]|
    }
public:
    Time &inputTime()
    {
        int hour, minute, second;
        cin>>hour>>minute>>second;
        this->hour(hour);this->minute(minute);this->second(second);
        return *this;
    }
public:
    int hour(int hh){return h = hh;}
    int minute(int mm){return m = mm;}
    int second(int ss ){return s = ss;}
public:
    int hour()const{return h;}
    int minute()const{return m;}
    int second()const{return s;}
    public:
    void showTime() const
    {
        if(h >= 0&& h<24 && m >=0 && m < 60 && s >= 0 && s < 60){
        cout << setw(2) << setfill('0');
        cout << setw(2) << h << ":";
        cout << setw(2) << m << ":";
        cout << setw(2) << s << endl;
        }
        else
            cout << "Time error" << endl;
    }
};
 
int main()
{
    cout<<"Constant test output :"<<endl;
    const Time c;
    const Time cc(1, 2, 3);
    const Time ccc(23, 60, 60);
    cout<<setw(2)<<setfill('0')<<c.hour()<<":";
    cout<<setw(2)<<setfill('0')<<c.minute()<<":";
    cout<<setw(2)<<setfill('0')<<c.second()<<endl;
    cc.getTime().showTime();
    ccc.showTime();
 
    cout<<"\nTest data output :"<<endl;
    Time t;
    int cases;
    cin>>cases;
    for(int i = 1; i <= cases; ++i)
    {
        if(i % 4 == 0)
        {
            int hour, minute, second;
            cin>>hour>>minute>>second;
            Time tt(hour, minute, second);
            tt.showTime();
        }
        if(i % 4 == 1)
        {
            int hour, minute, second;
            cin>>hour>>minute>>second;
            t.setTime(hour, minute, second).showTime();
        }
        if(i % 4 == 2)
            t.inputTime().showTime();
        if(i % 4 == 3)
        {
            int hour, minute, second;
            cin>>hour>>minute>>second;
            t.hour(hour);
            t.minute(minute);
            t.second(second);
            t.showTime();
        }
    }
}



标签:const,常量,hour,int,second,时间,Time,Problem,minute
From: https://blog.51cto.com/u_16129621/6370427

相关文章

  • Problem A: 平面上的点和线——Point类、Line类 (I)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemA:平面上的点和线——Point类、Line类(I)TimeLimit:1Sec  MemoryLimit:128MBSubmit:3609  Solved:2357[Submit][Status][WebBoard]Description在数学上,平面直角坐标系上的点......
  • Problem B: 类的初体验(II)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemB:类的初体验(II)TimeLimit:1Sec  MemoryLimit:128MBSubmit:715  Solved:653[Submit][Status][WebBoard]Description定义一个类Data,只有一个double类型的属性和如下3个方法:1. 带1......
  • Problem D: 类的初体验(IV)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemD:类的初体验(IV)TimeLimit:1Sec  MemoryLimit:128MBSubmit:1075  Solved:657[Submit][Status][WebBoard]Description定义一个类Data,只有一个int类型的属性和如下方法:1. 缺省构造......
  • Problem A: 平面上的点——Point类 (I)
    ProblemA:平面上的点——Point类(I)TimeLimit:1Sec  MemoryLimit:4MBSubmit:8255  Solved:3705[Submit][Status][WebBoard]Description在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定。现在我们封装一个“Point类”来实现平面上......
  • Problem A: 你会定义类吗?
    ProblemA:你会定义类吗?TimeLimit:1Sec  MemoryLimit:128MBSubmit:1373  Solved:1078[Submit][Status][WebBoard]Description定义一个类Demo,有构造函数、析构函数和成员函数show(),其中show()根据样例的格式输出具体属性值。该类只有一个int类型的成......
  • MySQL中时间函数NOW()和SYSDATE()的区别
    mysql中日期函数还是比较常用的。主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别。NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间。因为NOW()取自mysql的一个变量”TIMESTAMP”,而这个变量在语句开始执行的时候就设定好了,因此在整个语句......
  • 2022 AMC 10A Problems
    2022AMC10AProblemsProblem1Whatisthevalueof                                             Problem2Mikecycledlapsinminutes.Assumehecycledataconst......
  • gps网络时间服务器(时间同步装置)助力电力信息化建设
    gps网络时间服务器(时间同步装置)助力电力信息化建设gps网络时间服务器(时间同步装置)助力电力信息化建设京准电子科技官微——ahjzsz时间的精确和统一是变电站自动化系统的最基本要求。只有电力系统中的各种自动化设备(如故障录波器、继电保护装置、RTU微机监控系统等)采用统一的......
  • pt-kill工具 -- 自动kill线上运行时间过长的SQL
    背景生产环境数据库出现运行时间过长的SQL,会影响数据库性能,如果同时出现多个类似SQL,则会影响数据库的可用性,从而导致业务不可用或体验差的情况。在出现此类SQL的情况下,DBA人工干预需要一定的时间,在此期间如果SQL量比较大,且业务不停请求时,人工干预比较麻烦,无法及时处理。因此需要......
  • 【React工作记录七十二】时间秒转换为毫秒
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语歌谣时间秒转换为毫秒编辑 核心代码getTim......