给出下面的基类Time的框架如下:
class Time
{
protected:
int second;
int minute;
int hour;
public:
void operator++();
void operator--();
}
建立一个派生类Time_12hours,用于表示十二进制时间,增加以下成员数据:
string type;//标识为12进制时间,type=”12-hours-time”
string interval;//标识为AM或者PM,interval=”AM”或interval=”PM”
增加以下成员函数:
void operator++();
void operator--();
建立一个派生类Time_24hours,用于表示二十四进制时间,增加以下成员数据:
string type;//标识为24进制时间,type=”24-hours-time”
增加以下成员函数:
void operator++();
void operator--();
生成上述类并编写主函数,根据输入的初始时间信息、自增或者自减类型、自增或者自减次数,输出其最后时间信息。
输入格式:测试输入包含多个测试用例,一个测试用例为一行,每行共五个数字,第一个数字为进制,121表示输入为12进制AM时间,122表示输入为12进制PM时间,输入为24表示输入为24进制时间,第二个数字为hour,第三个数字为minute,第四个数字为second,第五个字符为运算类型,+表示自增,-表示自减,第六个数字为运算次数,0表示测试用例结束。
输入样例:
121 11 59 59 + 3
24 11 59 59 + 3
122 11 59 59 + 3
122 00 00 00 - 3
121 00 00 00 - 5
24 00 00 00 - 1
0
输出样例:
PM 00:00:02
12:00:02
AM 00:00:02
AM 11:59:57
PM 11:59:55
23:59:59
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
因为我想偷懒,就没有进行Time类的设计,直接在最后把24小时制的转化一下而已。
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class Time{
public:
int second;
int minute;
int hour;
public:
void operator++();
void operator--();
};
class Time_24hours:public Time{
public:
string type;
string interval;
public:
void changeInterval(){
if(interval=="AM"){
interval="PM";
//cout<<"change"<<endl;
}
else if(interval=="PM"){
interval="AM";
//cout<<"change"<<endl;
}
}
Time_24hours(int s,int m,int h,string i){
second=s;
minute=m;
hour=h;
interval=i;
}
public:
void operator++(){
if(second<59){
second++;
}else{
second=0;
if(minute<59){
minute++;
}else{
minute=0;
if(hour<11){
hour++;
}else{
hour=0;
changeInterval();
}
}
}
}
void operator--(){
if(second>0){
second--;
}else{
second=59;
if(minute>0){
minute--;
}else{
minute=59;
if(hour>0){
hour--;
}else{
hour=11;
changeInterval();
}
}
}
}
};
int main(){
string jin;
int s,m,h,n;
char op;
while(1){
cin>>jin;
if(jin=="121"){
cin>>h>>m>>s>>op>>n;
Time_24hours t(s,m,h,"AM");
while(n!=0){
if(op=='+') ++t;
else --t;
n--;
}
cout << t.interval << " "
<< setw(2) << setfill('0') << t.hour <<":"
<< setw(2) << setfill('0') << t.minute <<":"
<< setw(2) << setfill('0') << t.second << endl;
}
if(jin=="122"){
cin>>h>>m>>s>>op>>n;
Time_24hours t(s,m,h,"PM");
while(n--){
if(op=='+') ++t;
else --t;
}
cout << t.interval << " "
<< setw(2) << setfill('0') << t.hour <<":"
<< setw(2) << setfill('0') << t.minute <<":"
<< setw(2) << setfill('0') << t.second << endl;
}
if(jin=="24"){
cin>>h>>m>>s>>op>>n;
Time_24hours t(s,m,h,"AM");
if(h>11){
t.hour-=12;
t.interval="PM";
}
while(n--){
if(op=='+') ++t;
else --t;
}
if(t.interval=="PM") t.hour+=12;
cout
<< setw(2) << setfill('0') << t.hour <<":"
<< setw(2) << setfill('0') << t.minute <<":"
<< setw(2) << setfill('0') << t.second << endl;
}
if(jin=="0") break;
}
return 0;
}