// // Program to test "next_date" function. // #include #include // "error_exit" function. // Post: "Bad input" printed; program exited. // (Yes, this is extremely crude.) void error_exit(void) { cout << "Bad input\n"; exit(EXIT_FAILURE); } // "next_date" function. // Pre: "day", "month", and "year" represent a date, e.g. 1/1/2000. // Post: Prints the next date, in month/day/year form. void next_date(int day, int month, int year) { // check year and month for acceptable values. if (year < 1) error_exit(); if ((month < 1) || (month > 12)) error_exit(); // calculate days in month. int days_in_month; // February if (month == 2) { // calculate number of days -- depends on whether a leap year. if ( ((year % 400) == 0) || (((year % 4) == 0) && ((year % 100) != 0))) days_in_month = 29; else days_in_month = 28; } // 30-day months (order in test based on "30 days hath September" :-) ) else if ((month == 9) || (month == 4) || (month == 6) || (month == 11)) days_in_month = 30; // 31-day months else days_in_month = 31; // check day for acceptable value. if ((day < 1) || (day > days_in_month)) error_exit(); // compute next day. day = day + 1; // next month? if (day > days_in_month) { month = month + 1; day = 1; } // next year? if (month > 12) { year = year + 1; month = 1; } // print result. cout << "next date, in month/day/year format: " << month << "/" << day << "/" << year << endl; } int main(void) { int d, m, y; cout << "Enter integers for month, day, year:\n"; cin >> m >> d >> y; next_date(d, m, y); return EXIT_SUCCESS; }