Print calendar for a given year - GeeksforGeeks
Problem: To print the calendar of any given year. The program should be such that it can prints the calendar of any input year.
Read full article from Print calendar for a given year - GeeksforGeeks
Problem: To print the calendar of any given year. The program should be such that it can prints the calendar of any input year.
/*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
year)
{
// January
if
(monthNumber == 0)
return
(31);
// February
if
(monthNumber == 1)
{
// If the year is leap then February has
// 29 days
if
(year % 400 == 0 ||
(year % 4 == 0 && year % 100 != 0))
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
year)
{
printf
(
" Calendar - %d\n\n"
, year);
int
days;
// Index of the day from 0 to 6
int
current = dayNumber (1, 1, year);
// 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, year);
// Print the current month name
printf
(
"\n ------------%s-------------\n"
,
getMonthName (i).c_str());
// Print the columns
printf
(
" Sun Mon Tue Wed Thu Fri Sat\n"
);
// 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
(
"\n"
);
}
}
if
(k)
printf
(
"\n"
);
current = k;
}
return
;
}
// Driver Program to check above funtions
int
main()
{
int
year = 2016;
printCalendar(year);
return
(0);
}