Server IP : 172.16.15.8 / Your IP : 18.224.30.113 Web Server : Apache System : Linux zeus.vwu.edu 4.18.0-553.27.1.el8_10.x86_64 #1 SMP Wed Nov 6 14:29:02 UTC 2024 x86_64 User : apache ( 48) PHP Version : 7.2.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0705) : /home/bmmassie/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
//------------------------------------------------------------- // Assignment #5 // // Written by: B M Massie // // Purpose: To produce a calendar. //------------------------------------------------------------- #include <iostream> #include <iomanip> using namespace std; //------------------------------------------------------------ // LeapYear determines if the year is a leap year or not // ----------------------------------------------------------- // Accepts: years 1700-2099 // Returns: true if year is a leap year and returns fasle // if the year is not a leap year //------------------------------------------------------------ bool LeapYear (int year) { if (year % 4 != 0) return false; else if (year % 100 == 0 && year % 400 != 0) return false; else return true; } //------------------------------------------------------------- // DaysInMonth determines the number of days of the month // Note: ignores leap year //------------------------------------------------------------- // Accepts: number (1 - 12) representing month // Returns: number of days in that month //------------------------------------------------------------- int DaysInMonth (int monthnum , int year) { int numdays; // temp variable for days in month switch (monthnum) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numdays = 31; break; case 2: if (LeapYear (year)== true) numdays = 29; else numdays = 28; break; case 4: case 6: case 9: case 11: numdays = 30; break; } return numdays; } //------------------------------------------------------------- // DisplayMonthName displays the month name to standard output //------------------------------------------------------------- // Accepts: number (1 - 12) representing month // Returns: nothing //------------------------------------------------------------- void DisplayMonthName (int monthnum) { switch (monthnum) { 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; } } //------------------------------------------------------------- // DisplayFirstWeek determines the first day of the first week //------------------------------------------------------------- // Accepts: numbers (0-6) representing days of week // Returns: nothing //------------------------------------------------------------- void DisplayFirstWeek (int startdayofweek) { int i; cout << endl; for (i = 0; i < startdayofweek; i++) cout << " "; for (i = 1; i <= (7 - startdayofweek); i++) cout << setw(4) << i; } //-------------------------------------------------------------- // DisplayFullWeek determines the start date for the full weeks // to follow and the correct dates //-------------------------------------------------------------- // Accepts: numbers (0-6) representing days of week // Returns: nothing //-------------------------------------------------------------- void DisplayFullWeek (int startdateofweek) { int i; cout << endl; for (i = startdateofweek; i <= (startdateofweek + 6); i++) cout << setw(4) << i; } //------------------------------------------------------------ // DisplayLastWeek determines what day the last week ends //------------------------------------------------------------ // Accepts: numbers (0-6) representing days of week and the // number days in the month // Returns: nothing //------------------------------------------------------------ void DisplayLastWeek (int startdateofweek, int numdaysinmonth) { int i; cout << endl; for ( i = startdateofweek; i <= numdaysinmonth; i++) cout << setw(4) << i; } //----------------------------------------------------------- // DisplayTitleAndHeadings gives you the month name and the // day names //----------------------------------------------------------- // Accepts: month numbers (1-12) // Returns: nothing //----------------------------------------------------------- void DisplayTitleAndHeadings (int monthnum) { cout << " "; DisplayMonthName (monthnum); cout << "\n Sun Mon Tue Wed Thu Fri Sat "; } //------------------------------------------------------------- // CalculationDayofWeek determines the day of the week of the // date that is passed through the parameters //------------------------------------------------------------- // Accepts: the parameters month, date, year // Returns: the day of the week the month starts on //------------------------------------------------------------- int CalculationDayofWeek (int month, int date, int year) { int dig2, // last two digits of year monthcode, // code for month yearcode, // code for year dayofweek, // day of the week month starts total; // the yearcode, the monthcode, the date dig2 = year % 100; yearcode = dig2 + (dig2 / 4); switch (month) { case 1: monthcode = 6; break; case 2: case 3: monthcode = 2; break; case 4: monthcode = 5; break; case 5: monthcode = 0; break; case 6: monthcode = 3; break; case 7: monthcode = 5; break; case 8: monthcode = 1; break; case 9: monthcode = 4; break; case 10: monthcode = 6; break; case 11: monthcode = 2; break; case 12: monthcode = 4; break; } total = yearcode + monthcode + date; if (year >= 1700 && year <= 1799) total = total + 5; else if (year >= 1800 && year <= 1899) total = total + 3; else if (year >= 1900 && year <= 1999) total = total + 1; else if (year >= 2100 && year <= 2199) total = total + 5; else if (year >= 2200 && year <= 2299) total = total + 3; if (LeapYear (year)== true) if ( month == 1 || month == 2) total = total - 1; dayofweek = total % 7; return dayofweek; } //------------------------------------------------------------- // Main Function //------------------------------------------------------------- int main ( ) { // --- Variables int begdayofmonth, // begin day of the month begdateofnextweek, // begin date of next week year, // year monthnum, // month number (1 - 12) entered by user numdays; // number of days in month // --- Get month number from user cout << "\nEnter a month number (1-12): "; cin >> monthnum; while (monthnum < 1 || monthnum > 12) { cout << "\n\n!!! Month number must be in range 1 - 12 !!!"; cout << "\n\nPlease re-enter month number: "; cin >> monthnum; } cout << "\nEnter a year (1700-2299): "; cin >> year; while (year < 1700 || year >2099) { cout << "\n\n!!! Year must be in range 1700 - 2099 !!!"; cout << "\n\n Please re-enter year: "; cin >> year; } // --- Get number of days in month begdayofmonth = CalculationDayofWeek (monthnum, 1, year); numdays = DaysInMonth(monthnum, year); // --- Display output sentence cout << endl; DisplayTitleAndHeadings (monthnum); DisplayFirstWeek(begdayofmonth); begdateofnextweek = 8 - begdayofmonth; DisplayFullWeek(begdateofnextweek); begdateofnextweek+=7; DisplayFullWeek(begdateofnextweek); begdateofnextweek+=7; DisplayFullWeek(begdateofnextweek); begdateofnextweek+=7; if (numdays - begdateofnextweek >= 7) { DisplayFullWeek(begdateofnextweek); begdateofnextweek+=7; } DisplayLastWeek(begdateofnextweek,numdays); cout << "\n\n"; return 0; }