it goes for a full year January - December. please comment it out. Thanks 12. Wr
ID: 3901884 • Letter: I
Question
it goes for a full year January - December.
please comment it out. Thanks
12. Write a program that prints a calendar for a year. Prompt the user for which day of the week anuary 1 is on and whether the year is a leap year. The day that January 1 is on is coded as follows: Sun 0 Mon 1 Tue 2 Wed 3 Thu 4 Fri 5 Sat 6 Hint: Use a switch statement inside a for or while loop for the months. Expected Output: Enter day of the week for January 1 4 Enter day leap year code (1 for leap year, 0 for non-leap year) 0 January Su Mo Tu We Th Fr Sa 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 February Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 March Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 April Su Mo Tu We Th Fr Sa 5 6 7 89 10 11Explanation / Answer
// A C++ Program to Implement a Calendar
// of an year
#include<bits/stdc++.h>
using namespace std;
/*A Function that returns the index of the day
of the date- day/month/year
For e.g-
Index Day
0 Sunday
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday*/
int dayNumber(int day, int month, int year)
{
static int t[] = { 0, 3, 2, 5, 0, 3, 5, 1,
4, 6, 2, 4 };
year -= month < 3;
return ( year + year/4 - year/100 +
year/400 + t[month-1] + day) % 7;
}
/*
A Function that returns the name of the month
with a given month number
Month Number Name
0 January
1 February
2 March
3 April
4 May
5 June
6 July
7 August
8 September
9 October
10 November
11 December */
string getMonthName(int monthNumber)
{
string months[] = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
};
return (months[monthNumber]);
}
/* A Function to return the number of days in
a month
Month Number Name Number of Days
0 January 31
1 February 28 (non-leap) / 29 (leap)
2 March 31
3 April 30
4 May 31
5 June 30
6 July 31
7 August 31
8 September 30
9 October 31
10 November 30
11 December 31
*/
int numberOfDays (int monthNumber, int leap)
{
// January
if (monthNumber == 0)
return (31);
// February
if (monthNumber == 1)
{
if(leap == 1)
return (29);
else
return (28);
}
// March
if (monthNumber == 2)
return (31);
// April
if (monthNumber == 3)
return (30);
// May
if (monthNumber == 4)
return (31);
// June
if (monthNumber == 5)
return (30);
// July
if (monthNumber == 6)
return (31);
// August
if (monthNumber == 7)
return (31);
// September
if (monthNumber == 8)
return (30);
// October
if (monthNumber == 9)
return (31);
// November
if (monthNumber == 10)
return (30);
// December
if (monthNumber == 11)
return (31);
}
// Function to print the calendar of the given year
void printCalendar(int day, int leap)
{
int days;
// Index of the day from 0 to 6
int current = day;
// i --> Iterate through all the months
// j --> Iterate through all the days of the
// month - i
for (int i = 0; i < 12; i++)
{
days = numberOfDays (i, leap);
// Print the current month name
printf(" ------------%s------------- ",
getMonthName (i).c_str());
// Print the columns
printf(" Sun Mon Tue Wed Thu Fri Sat ");
// Print appropriate spaces
int k;
for (k = 0; k < current; k++)
printf(" ");
for (int j = 1; j <= days; j++)
{
printf("%5d", j);
if (++k > 6)
{
k = 0;
printf(" ");
}
}
if (k)
printf(" ");
current = k;
}
return;
}
// Driver Program to check above funtions
int main()
{
int day, leap;
printf("Enter the day of the week Jan 1 is on: ");
scanf("%d", &day);
printf("Enter leap year code (1 for leap year, 0 for non-leap year: ");
scanf("%d", &leap);
printCalendar(day, leap);
return (0);
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.