Trying Clean Program Include Include Using Namespace Std Int Main Int Year Month Day Char Q10503809

Trying to clean up this program:

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
int year, month, day;
char c;
bool validInput = false;
while ((cin) && !validInput)
    {
      cout << “Enter a date in theform YYYY-MM-DD: ” << flush;
      cin >> year >> c>> month >> c >> day;

      // Check to see if this is avalid date

      // The Gregorian calendar beganOn Oct 15, 1582. Earlier dates
      // are invalid.
      if (year < 1582)
validInput= false;
      else if (year == 1582 &&month < 10)
validInput = false;
      else if (year == 1582 &&month == 10 && day < 15)
validInput = false;

      // Months must be in the range1..12
      else if (month < 1 || month >12)
validInput = false;

      // Days must be in the range 1..Kwhere K is the number of
      // days in that month.
      else
{
   int numberOfDaysInMonth = 0;
   switch (month)
     {
     case 1:
     case 3:
     case 5:
     case 7:
     case 8:
     case 10:
     case 12:
       numberOfDaysInMonth =31;
       break;

     case 4:
     case 6:
     case 9:
     case 11:
       numberOfDaysInMonth =30;
       break;

     case 2:
       if (((year % 4 == 0)&& (year % 100 != 0))
    || (year % 400 == 0))
  numberOfDaysInMonth = 29;
       else
  numberOfDaysInMonth = 28;
     }

   if (day < 1 || day >numberOfDaysInMonth)
     validInput = false;
   else
     validInput = true;
}

      if (!validInput)
{
   cout << “Sorry, that is not a valid date”<< endl;
   string garbage;
   getline (cin, garbage); // discard the rest oftheinput line
}
    }
if (!cin)
    {
      cout << “Could not obtainvalid input.” << endl;
      return -1;
    }

// Input is valid – compute the day number

// Add up the number of days in all earlier months
// of this year
int sum = 0;
for (int m = 1; m < month; ++m)
    {
      int monthLength = 0;
      switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
   monthLength = 31;
   break;

case 4:
case 6:
case 9:
case 11:
   monthLength = 30;
   break;

case 2:
   if (((year % 4 == 0) && (year % 100 !=0))
       || (year % 400 == 0))
     monthLength = 29;
   else
     monthLength = 28;
}

      sum += monthLength;
    }

// Then add the day number to that sum
int dayNum = sum + day;

cout << setw(2) << setfill(‘0’) << month
       << “/” << setw(2)<< setfill(‘0’) << day << “/”
       << setw(4) <<year;
cout << ” is day #” << dayNum << ” of that year.”<< endl;

return 0;
}

Rewrite the program by grouping the calculations into functions.In particular, you should introduce the following functions:

A function named numberOfDaysInMonth that returns an intcontaining the number of days in a month, given the month and year,(passed, in that order, as int parameters).

A function named dateIsValid that tests a date to see if it is avalid date in the Gregorian calendar, returning true if it is validand false if it is not. The inputs are the year, month, and day(passed, in that order, as int parameters).

A function isALeapYear that takes a year (int) as a parameterand determines whether a given year is a leap year or not,returning true or false as appropriate

A function named dayOfTheYear to compute the day number withinthe year. This function will have no return value. Its parameters,all integers, will be, in order, the year, month, and day (inputs)and the day number (output).

As you introduce each function, replace the code in main() bycalls to your new functions as appropriate. In particular, notethat some of these new functions may be called from within thebodies of some of the other functions.

Remember that this program was already working. You should notalter the input or output of the program, as it would be observedby someone running the program, in any way.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *