Write a program that can determine the number of days in a month for a specified
ID: 3635345 • Letter: W
Question
Write a program that can determine the number of days in a month for a specified month and year. The program should allow a user to enter two integers representing a month and a year, and it should determine how many days are in the specified month. The integers 1 through 12 will be used to identify the months of January through December. The user indicates the end of input by entering 0 0 for the month and year. At that point, the program prints the number of days in the current month and terminates.
Use the following criteria to identify leap years:
1. A year Y is divisible by 100. Then Y is a leap year if and if only it is divisible by 400. For example, 2000 is a leap year but 2100 is not.
2.A year Y is not divisible by 100. Then Y is a leap year if and only if it is divisible by 4. For example, 2008 is a leap year, but 2009 is not.
Here is the sample run of the program:
Enter month and year: 2 2008[Enter]
29 days
Enter month and year: 0 0[Enter]
The current month, September 2009, has 30 days.
Explanation / Answer
please rate - thanks
#include <iostream>
#include <ctime>
#include <string>
using namespace std;
int getDays(int,int);
int main()
{bool done=false;
int month,year,days=0;
time_t rawtime;
struct tm* timeinfo;
time( &rawtime );
timeinfo = localtime( &rawtime );
string months[]={"January","February","March","April","May","June",
"July","August","September","October","November","December"};
cout<<"Enter month and year(0 0 to terminate): ";
cin>>month;
cin>>year;
while(!done)
{if(month==0&&year==0)
{done=true;
year=timeinfo->tm_year + 1900;
days=getDays(timeinfo->tm_mon+1,year);
cout<<"The current month, "<<months[timeinfo->tm_mon]<<" "<<year<<" has ";
}
else if(month<1||month>12)
cout<<"InValid date ";
else
days=getDays(month,year);
cout<<days<<" days ";
if(!done)
{cout<<"Enter month and year(0 0 to terminate): ";
cin>>month;
cin>>year;
}
}
system("pause");
return 0;
}
int getDays(int month,int year)
{int days;
switch(month)
{case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days=31;
break;
case 2:
days=28;
if(year%4==0)
if(year%100==0)
{if(year%400==0)
days++;
}
else
days++;
break;
default: days=30;
}
return days;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.