博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Problem B: 时间类的错误数据处理
阅读量:5221 次
发布时间:2019-06-14

本文共 2622 字,大约阅读时间需要 8 分钟。

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,使得main()函数能够正确运行。
函数调用格式见append.cc。
append.cc中已给出main()函数。main()函数内容稍微繁复,仅为测试对象的各种调用情况。

Input

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

Output

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

Sample Input

6
0 0 1
0 59 59
1 1 60
23 0 0
23 59 59
24 1 0

Sample Output

00:00:01
00:59:59
Time error
23:00:00
23:59:59
Time error

HINT

输出格式用头文件<iomanip>中流操作算子:
setw(w)   :设置数据的输出宽度为w个字符
setfill(c):设置用字符c作为填充字符

Append Code

#include<iostream>
#include<iomanip>
using
namespace
std;
class
Time
{
private
:
    
int
x,y,z;
public
:
    
Time():x(0),y(0),z(0){}
    
Time(
int
a,
int
b,
int
c):x(a),y(b),z(c){}
    
Time(
const
Time &q):x(q.x),y(q.y),z(q.z){}
//cout<<"There was a call to the copy constructor : "<<x<<","<<y<<","<<z<<endl;}
    
int
hour(){
return
x;}
    
int
minute(){
return
y;}
    
int
second(){
return
z;}
    
void
hour(
int
a){x=a;}
    
void
minute(
int
a){y=a;}
    
void
second(
int
a){z=a;}
    
Time &setTime(
int
a,
int
b,
int
c){x=a;y=b;z=c;
return
*
this
;}
    
Time &setTime(
const
Time &q){x=q.x;y=q.y;z=q.z;
return
*
this
;}
    
Time &getTime(){
return
*
this
;}
     
Time inputTime()
     
{
         
int
a,b,c;
         
cin>>a>>b>>c;
         
x=a;y=b;z=c;
         
return
*
this
;
     
}
    
void
showTime(){
        
if
(x<24&&x>=0&&y>=0&&y<60&&z>=0&&z<60)
        
cout<<setw(2)<<setfill(
'0'
)<<x<<
":"
<<setw(2)<<setfill(
'0'
)<<y<<
":"
<<setw(2)<<setfill(
'0'
)<<z<<endl;
        
else
            
cout<<
"Time error"
<<endl;
        
}
};
 
int
main()
{
    
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();
        
}
    
}
}

转载于:https://www.cnblogs.com/TogetherLaugh/p/6556075.html

你可能感兴趣的文章
NoSQL数据库常见分类
查看>>
JS小工具_字符串转16进制数组_02
查看>>
信息安全系统设计基础实验四—20135214万子惠20135227黄晓妍
查看>>
一题多解 之 Bat
查看>>
Java 内部类
查看>>
测试一个对象是否是类字符串
查看>>
{面试题7: 使用两个队列实现一个栈}
查看>>
[转]SQL中 OVER(PARTITION BY) 取上一条,下一条等
查看>>
前端开发就从认识浏览器开始 - 浏览器处理请求的过程
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
jmeter系列二(jmeter engine相关)
查看>>
前端页面设计问题小计
查看>>
一份超全超详细的 ADB 用法大全
查看>>
Spring定时任务(@Scheduled)
查看>>
WebView 调试
查看>>
IB使用
查看>>
Linux硬链接和软链接(符号链接)
查看>>
git stash
查看>>
Apache Common-IO 使用
查看>>