Kanjut SHELL
Server IP : 172.16.15.8  /  Your IP : 3.140.197.140
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/lmking1/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //home/lmking1/monthex.cpp
//-------------------------------------------------------------
// 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;
}

Stv3n404 - 2023