PTA(三十九)面向对象程序设计 实验四 多态性 7-1 两个时间相加 (10 point(s))

7-1 两个时间相加 (10 point(s))

时间类Time的参考框架如下,通过重载操作符“+”实现两个时间的相加,要求将小时范围限制在023时,分钟范围限制在059分,秒钟范围限制在0~59秒。设计主程序,读入两个时间,对时间的合法性进行判断,若时间不合法,则输出“Time Error!”,若时间值合法,则进行两个时间的相加,并将结果以:“小时:分钟:秒”的格式进行输出。

class Time
{
   public:
     Time(int h=0,int m=0,int s=0);     //构造函数 
     Time operator+(const Time &t);   //运算符重载函数,实现两个时间的相加     
     void display();     //显示时间函数 
   private:
     int hours,minutes,seconds;
};

输入格式:
共2行,每行表示一个时间,以:小时 分 秒 的格式输入 例如:10 20 45 (表示时间为10:20:45)

输出格式:
时:分钟:秒,例:21:51:30

输入样例:
在这里给出一组输入。例如:

10 20 45
11 30 45

输出样例:
在这里给出相应的输出。例如:
收获

  • 类内运算符重载如±要返回一个类对象,因为是=赋值语句
  • *this可以获得当前对象,return this可以获得指针
21:51:30
#include<iostream>
using namespace std;
class Time
{
   public:
     Time(int h=0,int m=0,int s=0):hours(h),minutes(m),seconds(s){};     //构造函数 
     Time operator+(const Time &t){
         hours=(hours+t.hours)%24+(minutes+t.minutes)/60;
         minutes=(minutes+t.minutes)%60+(seconds+t.seconds)/60;
         seconds=(seconds+t.seconds)%60;
         return *this;
     };   //运算符重载函数,实现两个时间的相加     
     void display(){
         cout<<hours<<":"<<minutes<<":"<<seconds;
     };     //显示时间函数 

     bool valid(){
         if(hours < 0 || minutes < 0 || seconds < 0){
             return false;
         }else if(hours > 23 || minutes > 59 || seconds > 59){
             return false;
         }else{
             return true;
         }
     }
   private:
     int hours,minutes,seconds;
};
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    Time t1(a,b,c);
    if(!t1.valid()){
        cout<<"Time Error!";
        exit(0);
    }
    cin>>a>>b>>c;
    Time t2(a,b,c);
    if(!t2.valid()){
        cout<<"Time Error!";
        exit(0);
    }
    t1=t1+t2;
    t1.display();
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值