Server IP : 172.16.15.8 / Your IP : 3.136.25.249 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/pswoodson/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
//------------------------------------------------------------- // Display a calendar user-defined functions // // // // Written By: Paula S. Woodson // Due Date Monday Nov. 17, 2008 //------------------------------------------------------------- #include <iostream> #include <iomanip> using namespace std; //------------------------------------------------------------ // LeapYear determines what years are leap years //------------------------------------------------------------ // Accepts: years (1700 - 2099) // Returns: leap year true or flase //------------------------------------------------------------ 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; } } //------------------------------------------------------------------------ // CalculateDayofWeek Calculates what day of the week the month starts on //------------------------------------------------------------------------ // Accepts: Month numbers // Returns: The day the week starts on //------------------------------------------------------------------------ int CalculateDayofWeek(int month, int day, int year) { int lastdigts, // the last digts of the year totalyear, // the number after you add the year up monthcode, // the month code totalcodes, // the toal number after everything is added up dayofweek, // the day the week starts on i; // year / 100 switch (month) { case 1: monthcode = 6; break; case 2: monthcode = 2; break; 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; } // calulate the day totalyear = lastdigts + lastdigts/4; totalcodes = totalyear + monthcode + day; // calulate the leap year lastdigts = year % 100; if (LeapYear(year) == true) if (month == 1 || month == 2) totalcodes = totalcodes - 1; // calulate the special years i = year / 100; if (i == 17 || i == 21) totalcodes = totalcodes + 5; if (i == 18 || i == 22) totalcodes = totalcodes + 3; if ( i == 19) totalcodes = totalcodes + 1; dayofweek = totalcodes % 7; return dayofweek; } //---------------------------------------------------------- // DisplayFirsLine displays the numbers for the first week //---------------------------------------------------------- // Accepts: numbers for the first week // Returns: nothing //---------------------------------------------------------- void DisplayFirstLine (int startdayofweek) { int i; // the date cout << endl; for(i=0; i < startdayofweek; i++) cout << " "; for(i=1; i <= (7 - startdayofweek); i++) cout << setw(6) << i; } //---------------------------------------------------------- // DisplayFullWeek displays the numbers for a full week //---------------------------------------------------------- //Accepts: numbers for the week // Returns: nothing //---------------------------------------------------------- void DisplayFullWeek(int startdateofweek) { int i; // the date cout << "\n"; for(i=startdateofweek; i <= startdateofweek + 6; i++) cout << setw(6)<<i; } //----------------------------------------------------------- //DisplayLastWeek displaysthe last week of thew month //----------------------------------------------------------- // Accepts: numbers for the last week // Returns: nothing //----------------------------------------------------------- void DisplayLastWeek (int startdateofweek,int numdaysinmonth) { int i; // the date cout << "\n"; for(i = startdateofweek; i<= numdaysinmonth; i++) cout << setw(6)<<i; } //--------------------------------------------------------------------- //DisplayTitleAndHeadings displays the month and the days of the week //--------------------------------------------------------------------- // Accepts: month and day // Returns: nothing //--------------------------------------------------------------------- void DisplayTitleAndHeadings (int month) { // Display the month cout << " "; DisplayMonthName(month); // Display the day of the week cout <<"\n\n" <<" Sun" << setw(6) <<"Mon" << setw(6) << "Tues" << setw(6) << "Weds" << setw(6); cout <<"Thus" << setw(6) << "Fri" << setw(6) << "Sat"; } //------------------------------------------------------------- // Main Function //------------------------------------------------------------- int main ( ) { // --- Variables int monthnum, // month number (1 - 12) entered by user year, // the year numdays, // number of days in month begdayofmonth, // the begin day of the month day, // the day begdateofnextweek; // the begin date of the next week // --- Get month number from user cout << "\nEnter a month number (1-12): "; cin >> monthnum; cout << "\nEnter year: "; cin >> year; // --- Validate month number 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; } while (year < 1700 || year > 2299) { cout << "\n\n!!! Year must be in range 1700 - 2299 !!!"; cout << "\n\nPlease re-enter year: "; cin >> year; } // --- Display the begin day of the month begdayofmonth = CalculateDayofWeek(monthnum,1,year); numdays = DaysInMonth(monthnum, year); // --- Display output sentence DisplayTitleAndHeadings(monthnum); DisplayFirstLine(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"; return 0; }