首页 > 其他分享 >Problem B: 时间和日期类(II)

Problem B: 时间和日期类(II)

时间:2023-05-25 17:38:31浏览次数:52  
标签:int DateTime II 日期 Time Date Problem month day


Home

Web Board

ProblemSet

Standing

Status

Statistics


Problem B: 时间和日期类(II)


Time Limit: 4 Sec   Memory Limit: 128 MB

Submit: 2673  

Solved: 1980

[Submit][Status][Web Board]


Description



设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间。

设计日期时间类DateTime由2个成员组成,分别是一个Date类对象和一个Time类对象;

设计DateTime类需支持以下操作:

DateTime::DateTime()无参构造方法:初始化为1年1月1日、0时0分0秒;

DateTime::DateTime(const Date&,const Time&)构造方法:依照参数传入的日期和时间初始化对象;

DateTime::DateTime(int,int,int,int,int,int)构造方法:依照参数(顺序为年月日、时分秒)初始化对象;

DateTime::showDateTime()方法:按格式输出DateTime对象;

DateTime::setDateTime(int,int,int,int,int,int)方法:依照参数(顺序为年月日、时分秒)修改对象的属性值;

DateTime类包含了两个类:Date类和Time类

设计日期类Date需支持以下操作:

Date::Date()无参构造方法:初始化为1年1月1日

Date::Date(int,int,int)构造方法:传入的参数依次为年月日,用参数将日期初始化。

Date::showDate()方法:按格式输出Date对象。

Date::setDate(int,int,int)方法:传入的参数依次为年月日,用参数修改对象的属性值

设计时间类Time需支持以下操作:

Time::Time()无参构造方法:初始化为0时0分0秒

Time::Time(int,int,int)构造方法:传入的参数依次为时分秒,用参数将时间初始化。

Time::showTime()方法:按格式输出Time对象。

Time::setTime(int,int,int)方法:传入的参数依次为时分秒,用参数修改对象的属性值

-----------------------------------------------------------------------------

你设计DateTime类、Date类和Time类,使得main()函数能够正确运行。

函数调用格式见append.cc。

append.cc中已给出main()函数。



Input



输入的第一个整数n,表示有n组测试数据。

后面的输入每行为一组测试数据。每组测试数据的前3个整数是日期的年月日,后3个整数是时间的时分秒。



Output



每组测试数据对应一行输出。日期的输出格式为“yyyy-mm-dd”,时间的输出格式为“hh:mm:ss”,中间用一个空格分开。



Sample Input



31982 10 1 0 0 02000 2 28 23 59 592014 7 2 13 30 01



Sample Output



1000-10-10 01:01:011982-10-01 00:00:002000-02-28 23:59:592014-07-02 13:30:01



HINT



输出格式用头文件<iomanip>中流操作算子:



setw(w)   :设置数据的输出宽度为w个字符



setfill(c):设置用字符c作为填充字符





Append Code



append.cc,


[ Submit][Status][Web Board]


한국어<  中文 فارسی English ไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAM
GPL2.0 2003-2011 HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin


#include<iostream>
#include<iomanip>
using namespace std;
class Date{
public:
    Date();
    Date(int newy,int newm,int newd);
    void showDate();
    int setDate(int newy1,int newm1,int newd1);
private:
    int year,month,day;
};
Date::Date(){
    int year=1,month=1,day=1;
}
Date::Date(int newy,int newm,int newd){
    year=newy;
    month=newm;
    day=newd;
}
int Date::setDate(int newy1,int newm1,int newd1){
    year=newy1;
    month=newm1;
    day=newd1;
}
void Date::showDate(){
    cout << setw(4) << setfill('0') << year << "-" << setw(2) << setfill('0') << month << "-" << setw(2) << setfill('0') << day ;
}
class Time{
public:
    Time();
    Time(int newh,int newmi,int news);
    void showTime();
    int setTime(int newh1,int newmi1,int news1);
private:
    int hour,minute,second;
};
Time::Time(){
    int hour=0,minute=0,second=0;
}
Time::Time(int newh,int newmi,int news){
    hour=newh;
    minute=newmi;
    second=news;
}
void Time::showTime() {
    cout <<setw(2)<<setfill('0')<< hour << ":" <<setw(2)<<setfill('0')<< minute << ":" <<setw(2)<<setfill('0')<< second ;
}
int Time::setTime(int newh1,int newmi1,int news1){
    hour=newh1;
    minute=newmi1;
    second=news1;
}
class DateTime{
public:
    DateTime():date(1,1,1),time(0,0,0){}
 
    DateTime(const Date&d,const Time&t):date(d),time(t){}
 
    DateTime(int y,int m,int d,int h,int mi,int s):date(y,m,d),time(h,mi,s){}
 
    void showDateTime()
    {
        date.showDate();
        cout<<" ";
        time.showTime();
    }
    DateTime&setDateTime(int y1,int m1,int d1,int h1,int mi1,int s1)
    {
        date.setDate(y1,m1,d1);
        time.setTime(h1,mi1,s1);
        return *this;
    }
private:
    Date date;  Time time;
};
int main()
{
    Date date(1000, 10, 10);
    Time time(1, 1, 1);
    DateTime date_time(date, time);
    date_time.showDateTime();
    cout << endl;
    int cases, flag = 0;
    cin >> cases;
    for(int ca = 0; ca < cases; ca++)
    {
        int year, month, day;
        cin >> year >> month >> day;
        int hour, minute, second;
        cin >> hour >> minute >> second;
        if(flag == 0)
        {
            flag = 1;
            DateTime dt(year, month, day, hour, minute, second);
            dt.showDateTime();
        }
        else if(flag == 1)
        {
            flag == 0;
            date_time.setDateTime(year, month, day, hour, minute, second).showDateTime();
        }
        cout << endl;
    }
}



标签:int,DateTime,II,日期,Time,Date,Problem,month,day
From: https://blog.51cto.com/u_16129621/6350294

相关文章

  • Problem A: 时间和日期类(I)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemA:时间和日期类(I)TimeLimit:4Sec  MemoryLimit:128MBSubmit:4223  Solved:2418[Submit][Status][WebBoard]Description设计一个时间类和一个日期类,用于读取输入的数据,按......
  • Problem E: STL——灵活的线性表
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:STL——灵活的线性表TimeLimit:1Sec  MemoryLimit:128MBSubmit:5192  Solved:2169[Submit][Status][WebBoard]Description数组和链表是我们熟知的两种线性结构,但是它们不够......
  • Problem C: 重载字符的加减法
    HomeWebBoardProblemSetStandingStatusStatisticsProblemC:重载字符的加减法TimeLimit:1Sec  MemoryLimit:128MBSubmit:1895  Solved:1155[Submit][Status][WebBoard]Description定义一个字符类Character,只有一个char类型的数据成员。重载......
  • Problem G: STL——Jerry的问题
    HomeWebBoardProblemSetStandingStatusStatisticsProblemG:STL——Jerry的问题TimeLimit:1Sec  MemoryLimit:128MBSubmit:3033  Solved:1888[Submit][Status][WebBoard]Description最近Jerry正在刻苦的学习STL中的set的功能函数,他发......
  • Problem I: STL——括号匹配
    HomeWebBoardProblemSetStandingStatusStatisticsProblemI:STL——括号匹配TimeLimit:1Sec  MemoryLimit:128MBSubmit:3032  Solved:1855[Submit][Status][WebBoard]Description给出一堆括号,看其是否匹配,例如()、()()、(())这样的......
  • Problem C: 数量的类模板
    HomeWebBoardProblemSetStandingStatusStatisticsProblemC:数量的类模板TimeLimit:1Sec  MemoryLimit:128MBSubmit:1173  Solved:812[Submit][Status][WebBoard]Description定义一个类模板Data,用于包装C++中的基本数据类型int和double。它......
  • Problem E: 新奇的加法运算
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:新奇的加法运算TimeLimit:1Sec  MemoryLimit:128MBSubmit:1117  Solved:685[Submit][Status][WebBoard]Description定义类newInt,包括:1.int类型的数据成员。2.重载运算符“+”。......
  • Problem A: 类的初体验
    HomeWebBoardProblemSetStandingStatusStatisticsProblemA:类的初体验TimeLimit:1Sec  MemoryLimit:128MBSubmit:723  Solved:661[Submit][Status][WebBoard]Description定义一个类Data,只有一个double类型的属性和如下3个方法:1.  voi......
  • Problem D: 平面上的点——Point类 (IV)
    ProblemD:平面上的点——Point类(IV)TimeLimit:1Sec  MemoryLimit:4MBSubmit:5400  Solved:3167[Submit][Status][WebBoard]Description在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定。现在我们封装一个“Point类”来实现平面上......
  • Problem E: 判断两个圆之间的关系
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:判断两个圆之间的关系TimeLimit:1Sec  MemoryLimit:128MBSubmit:1107  Solved:925[Submit][Status][WebBoard]Description定义Point类,包括double类型的两个属性,分别表示二维空间......