Answer:
I am writing a C++ program.
#include <iostream> // for input output functions
using namespace std; // to identify objects like cout, cin
int main() { // start of main() function body
int year; // stores the year entered
string month; // holds the letters of a month
cout<<"Enter the Year: "; // prompts user to enter year
cin>>year; // reads year entered by user
cout<<"Enter first three letters of a month ";
// prompts user to enter first three letters of a month
cin>>month; //reads the three letters of month entered by the user
// formula to determine leap year
bool leapYear =((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
//if checks if the 3 letters of input month match with one from these months
if ( month == "Jan" || month =="Mar" || month == "May" || month == "Jul" || month == "Aug"|| month == "Oct"|| month == "Dec")
//displays no of days in input month and year are 31
cout<<"Number of days in "<<month<<" "<<year<<": 31 ";
//else- if checks if the input month matches with one from these months
else if (month =="Apr" || month=="Jun"|| month == "Sep"|| month == "Nov")
//displays no of days in input month and year are 31
cout<<"Number of days in "<<month<<" "<<year<<": 30 ";
else if (month =="Feb") //if the input month is Feb
cout<<"Number of days in "<<month<<" "<<year<<": "<<((leapYear) ? 29 : 28); // checks if the year is leap if yes then displays 29 days else 28
else //if none of the above if else conditions is true
{cout<<"Not a valid entry"; //displays invalid entry
exit(0); //exits the program } }
Explanation:
The basic working of this program is briefly described in the comments above. I will explain the logic of the program.
This program takes int type year and a string month from the user (first three letters of the month).
Then it computes that if the year entered by the user is a leap year by this formula:
((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)
A leap year has 366 days and year which is not a leap year has 365 days. modulus operator is used here which returns the remainder of the division. If the input year is completely divisible by 4 which means we get remainder 0 then mod of year is taken with 100. If the input year is evenly divisible by 100 then mode of year is taken with 400. Then if the input year is completely divisible by 400 this means the year is a leap year. Otherwise, year is not a leap year.
Next the IF statement is used to check the condition if the first three letters the month entered by the user matches one of the those mentioned in the if statement. As we know that the months Jan, March, May, July, Aug, Oct and Dec have 31 days so if the input month is any of these months then the message is displayed that the month has 31 days.
If the input month is not from the above months then else-if part is checked for input month. If the input month's letters matches with any of the months in else-if condition then the message displayed that the input year and month has 30 days.
If the above if and else if statement evaluate to false then the second else-if part is executed which checks if the input month is Feb, if its true the conditional statement checks if the input year is a leap year or not. If the input year is a leap year then the month Feb has 29 days otherwise 28 days.
If none of the above conditions are true this means that the user might be entering wrong letters such as Fab or Aig etc instead of Feb or Aug, so the message printed : Not a valid entry and program exits.
Screenshot of program along with its output is attached.