C++訓練題
自定義一個簡單日期類 DateType,它具有資料成員 y、m、d,用來表示目前日期的年、月、日。
而後設計該類欲實作(完成)的功能,進而設計出相應的類成員函數。
題目描述
自定義一個簡單日期類 DateType,它具有資料成員 y、m、d,用來表示目前日期的年、月、日。
而後設計該類欲實作(完成)的功能,進而設計出相應的類成員函數。
class DateType {
//自定義的日期類 DateType
int y,m,d; //資料成員,表示目前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//構造函數,設定年、月、日;并設定參數預設值
void IncrementDay(); //增加 1 天
bool Equal(DateType dt2); //判斷二日期是否相等
void PrintDate(); //螢幕輸出日期對象的有關資料(年、月、日)
};
1、完成有參構造函數
2、完成 void
IncrementDay()函數,計算天數加1後的日期。
3、完成Equal(DateType
dt2)函數,判斷兩個日期是否相等。
4、完成列印輸出函數PrintDate(),在螢幕上輸出日期對象的有關資料(年、月、日)
5、編寫并完成主函數,實作輸入包含六個整數,說明DateType類對象dt1,dt2,分别是dt1和dt2的年月日。請先輸出dt1,dt2,然後判斷dt1,dt2是否相等,再對dt1,dt2分别增加一天。最後輸出dt1,dt2。
代碼如下:‘
#include<iostream>
using namespace
std;
class DateType {
//自定義的日期類 DateType
int y,m,d; //資料成員,表示目前日期的年、月、日
public:
DateType(int y0=1, int m0=1, int d0=1);
//構造函數,設定年、月、日;并設定參數預設值
void IncrementDay(); //增加 1 天
bool Equal(DateType dt2); //判斷二日期是否相等
void PrintDate(); //螢幕輸出日期對象的有關資料(年、月、日)
};
DateType ::
DateType(int y0,int m0,int d0)
{
y=y0;
m=m0;
d=d0;
};
void DateType ::
PrintDate()
{
cout<<y<<":"<<m<<":"<<d<<endl;
}
bool DateType:: Equal(DateType dt2)
{
if(y==dt2.y&&m==dt2.m&&d==dt2.d)
return 1;
else
return 0;
};
void DateType ::
IncrementDay()
{
int
M[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(y%4==0&&y%100==0||y%400==0)
{
M[1]=29;
};
switch(m)
{
case 1:if((d+1)>31){
m++;
d=1;}
else
d++;
break;
case 2:if((d+1)>M[1]){
m++;
d=1;}
else
d++;
break;
case 3:if((d+1)>M[2]){
m++;
d=1;}
else
d++;
break;
case 4:if((d+1)>M[3]){
m++;
d=1;}
else
d++;
break;
case 5:if((d+1)>M[4]){
m++;
d=1;}
else
d++;
break;
case 6:if((d+1)>M[5]){
m++;
d=1;}
else
d++;
break;
case 7:if((d+1)>M[6]){
m++;
d=1;}
else
d++;
break;
case 8:if((d+1)>M[7]){
m++;
d=1;}
else
d++;
break;
case 9:if((d+1)>M[8]){
m++;
d=1;}
else
d++;
break;
case 10:if((d+1)>M[9]){
m++;
d=1;}
else
d++;
break;
case 11:if((d+1)>M[10]){
m++;
d=1;}
else
d++;
break;
case 12:if((d+1)>M[11]){
m=1;
y++;
d=1;}
else
d++;
break;
}
};
int main()
{
int
d1_y,d1_m,d1_d,d2_y,d2_m,d2_d;
cin>>d1_y>>d1_m>>d1_d>>d2_y>>d2_m>>d2_d;
DateType dt1(d1_y,d1_m,d1_d),dt2(d2_y,d2_m,d2_d);
dt1.PrintDate();
dt2.PrintDate();
if(dt1.Equal(dt2))
cout<<"True"<<endl;
else
cout<<"False"<<endl;
dt1.IncrementDay();
dt2.IncrementDay();
dt1.PrintDate();
dt2.PrintDate();
}