Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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 11

Explanation / 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);

}