《C++程序设计实践》实验十(9)

《C++程序设计实践》实验十(9),第1张

【描述】
声明并实现一个Time类,表示时间。Time类包括:
int类型的私有数据成员hour、minute、second,表示时、分、秒。
带默认参数的构造函数,将时、分、秒设置为给定的参数。时、分、秒的默认参数值为0。需要检查时、分、秒的有效性。如果超出允许范围,则抛出invalid_argument("Invalid argument!")异常。
访问器函数getHour、getMinute和getSecond,分别用于访问时、分、秒。
成员函数setTime,用于同时修改时、分、秒。需要检查时、分、秒的有效性。如果超出允许范围,则抛出invalid_argument("Invalid argument!")异常。
重载自增运算符++,将时间递增1秒。要考虑增加1秒后,时间增加到下一分钟、下一小时、下一天的情况。要考虑前置++和后置++。
重载关系运算符==,判断两个时间是否相等。
使用类型转换函数,将时间转换为秒数。
重载流插入运算符<<,以24小时制格式输出时间,格式为时:分:秒。
【输入】
输入一行,有3个数据,分别表示时、分、秒,以空格间隔。
【输出】
见【输出示例】
【输入示例】
23 59 57
【输出示例】
t1:23:59:57
t2:00:00:00
t1:23:59:58
t2:23:59:57
t1 != t2
86398 【来源】
《程序设计基础——以C++为例》第6章实验5。
#include 
#include 
#include 
using namespace std;
class Time {
    private:
        int hour, minute, second;
    public:
        Time(int hour = 0, int minute = 0, int second = 0) {
            this->hour = hour;
            this->minute = minute;
            this->second = second;
            if (second >= 60) {
                throw invalid_argument("Invalid_argument!");
            }
        }
        void setHour(int hour) {
            this->hour = hour;
        }
        void setMinute(int minute) {
            this->minute = minute;
        }
        void setSecond(int second) {
            this->second = second;
        }
        int getHour() {
            return hour;
        }
        int getMinute() {
            return minute;
        }
        int getSecond() {
            return second;
        }
        void setTime(int hour, int minute, int second) {
            this->hour = hour;
            this->minute = minute;
            this->second = second;
        }
        Time operator++(int)//
        {
            //后使用
            Time temp = *this;
            this->second++;
            if (second == 60) {     //如果满60s了就进一位
                second = 0;
                minute += 1;
            }
            if (minute == 60) {
                minute = 0;
                hour = hour + 1;
            }
            if (hour == 24)
            {
                hour = 0;
            }
            this->hour;
            this->minute;
            return temp;
        }
        Time(const Time& str) {
            this->hour = str.hour;
            this->minute = str.minute;
            this->second = str.second;
        }

        //Time& operator==(const Time& str)
        bool operator==(const Time& str) {
            if (this == &str) {
                return 1;
            }
            return 0;
        }
        friend ostream& operator << (ostream& output, Time& c) {
            output << setw(2) << setfill('0')<< c.hour << ":";
            output << setw(2) << setfill('0') << c.minute << ":";
            output << setw(2) << setfill('0') << c.second<> hour >> minute >> second;
    try {
        Time t1(hour, minute, second);
    	Time t2;
    	cout << "t1: ";
    	cout << t1;
	cout << "t2: ";
    	cout << t2;
	t2 = t1++;
	cout << "t1: ";
	cout << t1;
	cout << "t2: ";
	cout << t2;
	if(t1 == t2)
            cout << "t1 == t2" << endl;
    	else
            cout << "t1 != t2" << endl;
    	int s = t1;
    	cout << s << endl;
    }
    catch(invalid_argument &ex) {
    	cout << ex.what() << endl;	
    }
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/713265.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-24
下一篇2022-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存