Server IP : 172.16.15.8 / Your IP : 3.15.211.71 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/vnlaughlin/../lmking1/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
//------------------------------------------------------------- // CS 112 Fall 2008 // Program Assignment #5 // Purpose: To create a calendar, that gives accurate output // for all months, for both leapyears and non-leapyears // Written by: L'Tia King // 10 November 2008 //------------------------------------------------------------- //------------------------------------------------------------- // Example to illustrate user-defined functions //------------------------------------------------------------- #include <iostream> #include <iomanip> using namespace std; //------------------------------------------------------------- // LeapYear determines whether the year entered is actually 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; } } //------------------------------------------------------------ // DisplayFirstLine determines the days for the first line of // the calendar //------------------------------------------------------------ void DisplayFirstLine (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 when the next line of the // calendar starts //--------------------------------------------------------- void DisplayFullWeek (int startdateofweek) { int i; cout << endl; for (i = startdateofweek; i <= (startdateofweek + 6); i++) cout << setw(4) << i; } //------------------------------------------------------------ // DisplayLastWeek determines when the last week of the // calendar should start as well as how many days it is // supposed to include //------------------------------------------------------------ void DisplayLastWeek (int startdateofweek, int numdaysinmonth) { int i; cout << endl; for (i = startdateofweek; i <= numdaysinmonth; i++) cout << setw(4) << i; } //------------------------------------------------------------ // CalculateDayofWeek calculates the dates for the month based // upon the year //----------------------------------------------------------- int CalculateDayofWeek (int month, int day, int year) { int calcday, lasttwo, monthcode, century; switch (month) { case 5: monthcode = 0; break; case 8: monthcode = 1; break; case 2: case 3: case 11: monthcode = 2; break; case 6: monthcode = 3; break; case 9: case 12: monthcode = 4; break; case 4: case 7: monthcode = 5; break; case 1: case 10: monthcode = 6; break; } lasttwo = year % 100; lasttwo += (lasttwo/4); calcday = lasttwo + monthcode + day; century = year / 100; if (century == 17 || century == 21) calcday += 5; else if(century == 18 || century == 22) calcday += 3; else if(century == 19) calcday += 1; if(LeapYear (year) == true && month == 1) calcday -= 1; else if(LeapYear (year) == true && month == 2) calcday -= 1; calcday = calcday % 7; return calcday; } //-------------------------------------------------------- // DisplaytitleAndHeadinfs does what it says //-------------------------------------------------------- void DisplayTitleAndHeadings (int month) { cout << " "; DisplayMonthName (month); cout << "\n\n Sun Mon Tue Wed Thu Fri Sat\n"; } //------------------------------------------------------------- // Main Function //------------------------------------------------------------- int main ( ) { // --- Variables int monthnum, // month number (1 - 12) entered by user numdays, // number of days in month startdayofweek, // begdateofnextweek, // begdayofmonth, // year; // --- Get month number from user cout << "\nEnter a month number (1-12): "; cin >> monthnum; // --- 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; } // --- Get year number from user cout << "Enter a year (1700-2299): "; cin >> year; // --- Validate year number while (year < 1700 || year > 2299) { cout << "\n\n!!! Year number must be in range 1700-2299!!!"; cout << "\n\nPlease re-enter year number: "; cin >> year; } // --- Get number of days in month numdays = DaysInMonth(monthnum, year); begdayofmonth = CalculateDayofWeek (monthnum, 1, year); // --- Display output sentence cout << "\n\n"; 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\n"; return 0; }