Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / C/C++ / Xây dựng lớp Date mô tả thông tin ngày, tháng, năm

Xây dựng lớp Date mô tả thông tin ngày, tháng, năm

Yêu cầu:

Xây dựng một lớp Date mô tả thông tin về ngày, tháng, năm (month, day, year). Lớp Date gồm các hàm thành phần.
– Hàm tạo với ba tham số có giá trị ngầm định.
– Hàm in thông tin về ngày tháng dưới dạng dd-mm-yyyy
– Hàm nextDay() để tăng Date từng ngày một.

– Hàm validateDate() kiểm tra tính hợp lệ của yy/mm/yyyy

Code:
/************************************************************/

#include <iostream>
#include <iomanip>
#include <string.h>

using namespace std;

char month_table[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char leap_month_table[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

//check leap year or not
#define IS_LEAP_YEAR(year) ((year%400 == 0) || (year%4 == 0 && year%100 != 0))? true : false


class CDate
{
private:
int day;
int month;
int year;
public:
CDate(int d = 0, int m = 0, int y = 0): day(d), month(m), year(y)
{
}
~CDate()
{
}
void print()
{
cout << setfill ('0') << setw(2) << day << "-"
<< setfill ('0') << setw(2) <<month << "-"
<< setfill ('0') << setw(4) << year << endl;
}
void nextDay()
{
day++;
if (IS_LEAP_YEAR(year))
{
if (day > leap_month_table[month-1])
{
day = 1;
month++;
if (month > 12)
{
month = 1;
year++;
}
}
}
else
{
if (day > month_table[month-1])
{
day = 1;
month++;
if (month > 12)
{
month = 1;
year++;
}
}
}
}
bool validDate()
{
// validate dd/mm/yyyy
if (year < 1 || year > 9999 ||
month < 1 || month > 12 ||
day < 1 || day > 31)
{
return false;
}

if (IS_LEAP_YEAR(year))
{
if (day > leap_month_table[month-1])
{
return false;
}
}
else
{
if (day > month_table[month-1])
{
return false;
}
}
return true;
}
};

void main()
{
CDate date1(31, 12, 2000);
if (date1.validDate())
{
date1.print();

date1.nextDay();
date1.print();
}
else
{
cout << "Invalid Date";
}

system("pause");
}

Kết quả:

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Xây dựng hàm bạn để tính diện tích hình chữ nhật

Yêu cầu: Xây dựng hàm bạn để tính diện tích hình chữ nhật Code: Giải …

Leave a Reply

avatar
  Subscribe  
Notify of