#include #include "MyString.h" using namespace std; class month { private: MyString name; int num; public: month() { name = "January"; num = 1;} month(MyString month) { name = month; if(!set_name(month)) cout << "ERROR: INVALID MONTH" << endl; } month(int number) { num = number; if(!set_name(number)) cout << "ERROR: INVALID NUMBER" << endl; } /***************SET******************/ bool set_name(MyString); bool set_name(int); bool set_month_num(int); bool set_month_num(MyString); /***************GET******************/ MyString get_name() { return name; } int get_month_num() { return num; } /********OVERLOADED OPERATORS********/ void operator ++ (); void operator ++ (int); void operator -- (); void operator -- (int); friend ostream &operator << (ostream &, const month &); friend istream &operator >> (istream &, month &); }; bool month::set_name(MyString str) { MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; bool status = false; for(int i=0; i<12; i++) { if(str == temp[i]) status = true; } name = str; return status; } bool month::set_name(int number) { MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; bool status = false; if (number > 0 && number <13) { name = temp[number - 1]; status = true; } else status = false; return status; } bool month::set_month_num(int number) { bool status = false; if (number > 0 && number <13) { num = number; status = true; } else status = false; return status; } bool month::set_month_num(MyString str) { bool status = false; MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; for(int i=0; i<12; i++) { if(str == temp[i]) { num = (i + 1); status = true; } } return status; } void month::operator ++ () { MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; int index; for(int i=0; i<12; i++) { if(name == temp[i]) index = (i+1); } if(index == 12) index = 0; name = temp[index]; num = index + 1; } void month::operator ++(int str) { MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; int index; for(int i=0; i<12; i++) { if(name == temp[i]) index = (i+1); } if(index == 12) index = 0; name = temp[index]; num = index + 1; } void month::operator --() { MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; int index; for(int i=0; i<12; i++) { if(name == temp[i]) index = (i-1); } if(index == -1) index = 11; name = temp[index]; num = index + 1; } void month::operator --(int str) { MyString temp[12] = { "January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; int index; for(int i=0; i<12; i++) { if(name == temp[i]) index = (i-1); } if(index == -1) index = 11; name = temp[index]; num = index + 1; } ostream &operator<<(ostream &strm, const month &obj) { strm << obj.name << " -> " << obj.num; return strm; } istream &operator>>(istream &strm, month &obj) { do { cout << "Enter the month number: "; strm >> obj.num; }while(obj.num < 0 && obj.num > 12); if(!obj.set_name(obj.num)) cout << "ERROR: INVALID INPUT" << endl; return strm; } int main() { month Month; cin >> Month; cout << "The month is: " << Month << endl << endl; cout << "Month++ is equal to: "; Month++; cout << Month << endl; cout << "++Month is equal to: "; ++Month; cout << Month << endl; cout << "Month-- is equal to: "; Month--; cout << Month << endl; cout << "--Month is equal to: "; --Month; cout << Month << endl << endl; return 0; }