Advertisement
jerimin

printmonth

Nov 14th, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5. void printMonthTitle(int year, int month); //prints the title based on what is input
  6. void printMonthName(int month);
  7. void printMonthBody(int year, int month);
  8. void printMonth(int year, int month);
  9. int getStartDay(int year, int month); // gets the first day of month
  10. int getTotalDays(int year, int month);
  11. int getDaysInMonth(int year, int month);// gets the total days in month
  12. bool isLeapYear(int year);
  13.  
  14. int main()
  15. {
  16.  
  17. int month;
  18. int year;
  19.  
  20. cout << "Enter the year (e.g. 2001) ";
  21. cin >> year;
  22.  
  23. cout << "Enter the month of that year (1 - 12) ";
  24. cin >> month;
  25.  
  26. printMonth(year,month);
  27.  
  28. return 0;
  29. }
  30.  
  31. void printMonth(int year, int month)
  32. {
  33. printMonthTitle(year,month);
  34.  
  35. printMonthBody(year,month);
  36.  
  37. }
  38.  
  39. void printMonthTitle(int year, int month)
  40. {
  41.   printMonthName(month);
  42.   cout <<"    "<<year;
  43.   cout << "\n ------------------------------------"<< endl;
  44.   cout<< " Sun  Mon  Tue   Wed   Thu   Fri   Sat "<< endl;
  45. }
  46.  
  47.  
  48. void printMonthName(int month)
  49. {
  50.   switch(month)
  51.   {
  52. case 1: cout << " January "; break;
  53. case 2: cout << " February "; break;
  54. case 3: cout << " March "; break;
  55. case 4: cout << " April "; break;
  56. case 5: cout << " May "; break;
  57. case 6: cout << " June "; break;
  58. case 7: cout << " July "; break;
  59. case 8: cout << " August "; break;
  60. case 9: cout << " September "; break;
  61. case 10: cout << " October "; break;
  62. case 11: cout << " November "; break;
  63. case 12: cout << " December "; break;
  64. default: cout << "invalid"; break;
  65.   }
  66. }
  67.  
  68. void printMonthBody(int year, int month)
  69. {
  70. int StartDay = getStartDay(year, month);
  71. int DaysInMonth = getDaysInMonth(year, month);
  72.  
  73. int i = 0;
  74. for(int i = 0; i < StartDay; i++)
  75. cout<<"   ";
  76.  
  77. for(int i = 1; i <= DaysInMonth; i++)
  78. {
  79.   cout << setw(6) << i;
  80.     if((i + StartDay - 1) % 7 == 0)
  81.     {
  82.       cout << endl;
  83.     }
  84. }
  85. }
  86.  
  87. int getStartDay(int year, int month)
  88. {
  89. int StartDay1800 = 3;
  90. int TotalDays = getTotalDays(year, month);
  91.  
  92. return(StartDay1800 +  TotalDays) % 7;
  93. }
  94.  
  95. int getTotalDays(int year, int month)
  96. {
  97. int total = 0;
  98. for(int i = 1800; i < year; i++) {
  99.   if(isLeapYear(i))
  100.   total = total + 366;
  101.     else
  102.   total = total + 365;
  103. }
  104.  
  105. for(int i = 1; i < month; i++)
  106.   total  = total + getDaysInMonth(year, i);
  107.  
  108.   return total;
  109. }
  110.  
  111.  int getDaysInMonth(int year, int month)
  112. {
  113. if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
  114.   return 31;
  115. if(month == 4 || month == 6 || month == 9 || month == 11)
  116.   return 30;
  117. if(month == 2)
  118.   return isLeapYear(year)? 29 : 28;
  119.       return 0;
  120. }
  121.  
  122.  bool isLeapYear(int year)
  123. {
  124.   return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement