Kanjut SHELL
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  ]

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

}


Stv3n404 - 2023