4-2 电子时钟中的运算符重载

来源:互联网 发布:md5加密java代码文件 编辑:程序博客网 时间:2024/06/16 15:09

4-2 电子时钟中的运算符重载
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description

通过本题目的练习可以运算符重载的方法;
设计一个时间类Time,私有数据成员有hour(时)、minute(分)、second(秒);
公有成员函数有:setHour(int)设置数据成员hour的值,非法的输入默认为12;setMinue(int)设置数据成员minute的值,非法输入默认为0;setSecond(int)设置数据成员second的值,非法输入默认为0;setTime(int,int,int)设置时、分、秒三个数据成员的值;三个成员函数int getHour(); int getMinute(); int getSecond();分别用于获取时间对象的属性值。
定义两个构造函数Time(); 和 Time(int,int,int);
定义一个成员函数void displayTime(); 用于显示时间,注意格式为 hh:mm:ss,位数不够用0填充;
定义一个时钟增加1的成员函数 void tick(); 把second的值加1,并注意是否到60;
定义一个成员或友元函数 bool operator= =(….); 判断两个时间对象的值是否相等;
定义一个成员或友元函数bool operator>(…..); 判断第一个时间对象的值是否大于第二个时间对象的值。

在主函数main()中指定开始时间和结束时间,并调用相应成员函数,显示从开始时间到结束时间之间所有时间对象的值,其格式见示例输出。
Input

输入6个整数,之间用一个空格间隔;分别表示开始时间的时、分、秒和结束时间的时、分、秒的值
Output

从开始时间到结束时间之间所有时间对象的值;每个值占一行,格式为hh:mm:ss
Example Input

01 01 01 01 01 10
Example Output

01:01:01
01:01:02
01:01:03
01:01:04
01:01:05
01:01:06
01:01:07
01:01:08
01:01:09
01:01:10
Hint

输入
11 10 12 10 12 56
输出
The begin time is not earlier than the end time!
Author

黄晶晶

#include <iostream>#include <cstdio>using namespace std;class Time{private:    int hour;    int minute;    int second;public:    Time(){};    Time(int,int,int);    void setHour(int);    void setMinue(int);    void setSecond(int);    void setTime(int,int,int);    int getHour();    int getMinute();    int getSecond();    void display();    void tick();    bool operator==(Time t);    bool operator>(Time t);};Time::Time(int hour,int minute,int second){    if(hour<=0&&hour>12){        this->hour = 12;    }    else        this->hour = hour;    if(minute<0&&minute>=60)    {        this->minute = 0;    }    else        this->minute = minute;    if(second<0&&second>=60)    {        this->second = 0;    }    else        this->second = second;}void Time::setHour(int hour){    if(hour<=0&&hour>12){        this->hour = 12;    }    else        this->hour = hour;}void Time::setMinue(int minute){    if(minute<0&&minute>=60)    {        this->minute = 0;    }    else        this->minute = minute;}void Time::setSecond(int second){    if(second<0&&second>=60)    {        this->second = 0;    }    else        this->second = second;}int Time::getHour(){    return this->hour;}int Time::getMinute(){    return this->minute;}int Time::getSecond(){    return this->second;}void Time::display(){    printf("%02d:%02d:%02d\n",this->hour,this->minute,this->second);}bool Time::operator==(Time t){    if(this->hour==t.hour&&this->minute==t.minute&&this->second==t.second){        return true;    }    return false;}bool Time::operator>(Time t){    if(this->hour>t.hour){        return true;    }    if(this->minute>t.minute){        return true;    }    if(this->second>t.second){        return true;    }    return false;}void Time::tick(){    this->second ++;    if(this->second>=60){        this->second = 0;        this->minute++;        if(this->minute>=60){            this->minute = 0;            this->hour++;            if(this->hour>=12){                this->hour = 1;            }        }    }}int main(){    int h1,m1,s1;    int h2,m2,s2;    cin>>h1>>m1>>s1>>h2>>m2>>s2;    Time t1(h1,m1,s1);    Time t2(h2,m2,s2);    if(t1>t2){        cout<<"The begin time is not earlier than the end time!"<<endl;    }else{        t1.display();        while(t2>t1){            t1.tick();            t1.display();        }    }    return 0;}