#include #include #include // Required for default constructor (time, localtime) using namespace std; class date { public: int year; int month; // 1 to 12 inclusive int day; // 1 to 31 depending on month date(int y, int m, int d); date(); void print() const; void next(); void next(int n); void prev(); void prev(int n); }; date::date(int y, int m, int d) { year = y; month = m; day = d; } date::date() { time_t now = time(0); tm* lt = localtime(&now); year = lt->tm_year + 1900; month = lt->tm_mon + 1; day = lt->tm_mday; } void date::next() { static const int daysInMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; int leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); int days = (month == 2 && leap) ? 29 : daysInMonth[month]; if (++day > days) { day = 1; if (++month > 12) { month = 1; ++year; } } } void date::next(int n) { for (int i = 0; i < n; ++i) next(); } void date::prev() { static const int daysInMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; if (--day < 1) { if (--month < 1) { month = 12; --year; } int leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); day = (month == 2 && leap) ? 29 : daysInMonth[month]; } } void date::prev(int n) { for (int i = 0; i < n; ++i) prev(); } void date::print() const { cout << year << "-" << month << "-" << day << '\n'; } int main() { const date today; / today.print(); date d(2025, 6, 4); d.print(); d.next(); d.print(); d.prev(); d.print(); d.next(5); d.print(); d.prev(5); d.print(); return 0; }