#include <iostream>
#include <string>
class Date
{
private:
int pMonth;
int pDay;
int pYear;
public:
Date();
void setDate(int month, int day, int year);
int getMonth(int month);
int getDay(int day);
int getYear(int year);
bool checkDate(int month, int day, int year);
std::string monthName(int month);
int isLeapyear (int year);
};
using namespace std;
int day;
int month;
int year;
string lMonth;
int main()
{
Date nextDay;
do{
cout << "please enter date mm/dd/yy" << endl;
cin >> month >> day >> year;
nextDay.setDate(month, day, year);
}while (nextDay.checkDate(month, day, year)==false);
if (month == 12 && day == 30)
{
month = 1;
day = 1;
year = year +1;
}
else if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day >= 31)
{
month = month + 1;
day = 1;
}
else if ((month == 4 || month == 6 || month == 9 || month == 11) && day >= 30)
{
month = month + 1;
day = 1;
}
else if ((month == 2) && (nextDay.isLeapyear (year)) && day >=29)
{
month = month + 1;
day = 1;
}
else if ((month == 2) && (!nextDay.isLeapyear (year)) && day >=28)
{
month = month + 1;
day = 1;
}
else
{
day = day + 1;
}
lMonth = nextDay.monthName(month);
cout << lMonth << " " << day <<" "<< year << endl;
return 0;
}
Date::Date()
{
int day = 1;
int month = 1;
int year = 2013;
}
void Date::setDate(int month, int day, int year)
{
pMonth = month;
pDay = day;
pYear = year;
}
int Date::getMonth(int month)
{
return month;
}
int Date::getDay(int day)
{
return day;
}
int Date::getYear(int year)
{
return year;
}
bool Date::checkDate(int month, int day, int year)
{
if ((month >= 1 && month <= 12) || (day >=1 && day<= 31) || (year >= 1753 ))
return false;
if((month == 12) && (day == 31) && (year == 9999))
return false;
if ((!isLeapyear(year)) && (day > 28))
return false;
if (month > 12)
return false;
return true;
}
string Date::monthName (int month)
{
string lMonth;
switch (month)
{
case 1:
lMonth = "January";
break;
case 2:
lMonth = "February";
break;
case 3:
lMonth = "March";
break;
case 5:
lMonth = "May";
break;
case 7:
lMonth = "July";
break;
case 8:
lMonth = "August";
break;
case 10:
lMonth = "October";
break;
case 12:
lMonth = "December";
break;
case 4:
lMonth = "April";
break;
case 6:
lMonth = "June";
break;
case 9:
lMonth = "September";
break;
case 11:
lMonth = "November";
break;
return lMonth;
}
}
int Date::isLeapyear (int year)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
return true;
else
return false;
}