#include #include #include using namespace std; class date { public: int year; int month; int day; void print() const; void next(int n); void next(); void prev(int n); void prev(); }; const int date_length[] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; bool is_leap_year(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } void date::print() const { cout << month << "/" << day << "/" << year; } void date::next(int n) { for (int i = 0; i < n; ++i) { next(); } } void date::next() { int max_days = (month == 2 && is_leap_year(year)) ? 29 : date_length[month]; if (day < max_days) { ++day; } else { day = 1; if (month < 12) { ++month; } else { month = 1; ++year; } } } void date::prev(int n) { for (int i = 0; i < n; ++i) { prev(); } } void date::prev() { if (day > 1) { --day; } else { if (month > 1) { --month; } else { month = 12; --year; } day = (month == 2 && is_leap_year(year)) ? 29 : date_length[month]; } } int main() { date testDate {2025, 3, 1}; cout << "Original date: "; testDate.print(); cout << endl; testDate.prev(); cout << "After going 1 day into the past: "; testDate.print(); cout << endl; return EXIT_SUCCESS; }