Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- using namespace std;
- void printMonthTitle(int year, int month); //prints the title based on what is input
- void printMonthName(int month);
- void printMonthBody(int year, int month);
- void printMonth(int year, int month);
- int getStartDay(int year, int month); // gets the first day of month
- int getTotalDays(int year, int month);
- int getDaysInMonth(int year, int month);// gets the total days in month
- bool isLeapYear(int year);
- int main()
- {
- int month;
- int year;
- cout << "Enter the year (e.g. 2001) ";
- cin >> year;
- cout << "Enter the month of that year (1 - 12) ";
- cin >> month;
- printMonth(year,month);
- return 0;
- }
- void printMonth(int year, int month)
- {
- printMonthTitle(year,month);
- printMonthBody(year,month);
- }
- void printMonthTitle(int year, int month)
- {
- printMonthName(month);
- cout <<" "<<year;
- cout << "\n ------------------------------------"<< endl;
- cout<< " Sun Mon Tue Wed Thu Fri Sat "<< endl;
- }
- void printMonthName(int month)
- {
- switch(month)
- {
- case 1: cout << " January "; break;
- case 2: cout << " February "; break;
- case 3: cout << " March "; break;
- case 4: cout << " April "; break;
- case 5: cout << " May "; break;
- case 6: cout << " June "; break;
- case 7: cout << " July "; break;
- case 8: cout << " August "; break;
- case 9: cout << " September "; break;
- case 10: cout << " October "; break;
- case 11: cout << " November "; break;
- case 12: cout << " December "; break;
- default: cout << "invalid"; break;
- }
- }
- void printMonthBody(int year, int month)
- {
- int StartDay = getStartDay(year, month);
- int DaysInMonth = getDaysInMonth(year, month);
- int i = 0;
- for(int i = 0; i < StartDay; i++)
- cout<<" ";
- for(int i = 1; i <= DaysInMonth; i++)
- {
- cout << setw(6) << i;
- if((i + StartDay - 1) % 7 == 0)
- {
- cout << endl;
- }
- }
- }
- int getStartDay(int year, int month)
- {
- int StartDay1800 = 3;
- int TotalDays = getTotalDays(year, month);
- return(StartDay1800 + TotalDays) % 7;
- }
- int getTotalDays(int year, int month)
- {
- int total = 0;
- for(int i = 1800; i < year; i++) {
- if(isLeapYear(i))
- total = total + 366;
- else
- total = total + 365;
- }
- for(int i = 1; i < month; i++)
- total = total + getDaysInMonth(year, i);
- return total;
- }
- int getDaysInMonth(int year, int month)
- {
- if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
- return 31;
- if(month == 4 || month == 6 || month == 9 || month == 11)
- return 30;
- if(month == 2)
- return isLeapYear(year)? 29 : 28;
- return 0;
- }
- bool isLeapYear(int year)
- {
- return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement