Write a program that prints a calendar for one year, given the day of the week that January 1 falls on. Each successive month starts on the day of the week that follows the last day of the preceding month. Days of the week will be numbered 0 through 6 for Sunday through Saturday.
This is the first part of a two part assignment using incremental development. The output will not look much like a calendar in part 1.
Do not use classes, arrays, or structs in this project!! (If you don't know what they are, don't worry, you aren't using them.)
Ultimately, after your next assignment, Your output should look exactly like the one in this sample screen output:
What year do you want a calendar for? 2002
What day of the week does January 1 fall on (0 for Sunday, 1 for Monday, etc.)? 2
2002
January
S M T W T F S
---------------------
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
February
S M T W T F S
---------------------
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
.
.
.
.
December
S M T W T F S
---------------------
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
However, for this assignment, you should just start every month on the same day (the day entered by the user), and just print all of the dates out on a single line. So, the output for this assignment will look like this:
What year do you want a calendar for? 2002
What day of the week does January 1 fall on (0 for Sunday, 1 for Monday, etc.)? 2
2002
January
S M T W T F S
---------------------
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
February
S M T W T F S
---------------------
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
.
.
.
.
December
S M T W T F S
---------------------
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
Additional Requirements and Hints:
Your program must determine whether a year is a leap year exactly, not just by checking for divisibility by 4. Also remember that you are free to steal the isLeapYear function from the lessons.
It is extremely important that you use stepwise refinement when designing this program. Insufficient decomposition may result in a grade of 0.
Required! You MUST have a single function named "printMonth()" that prints out ANY month, given (1) the year, (2) the month number, and (3) the day of week that the month starts on. (Think about why the printMonth() function will need to know the year.) For example, don't create 12 separate functions, one named "printJanuary", one named "printFebruary," and so on. In addition, you must have only ONE call to this printMonth function, in a loop that calls the function 12 times. This printMonth() function must print the entire month, including the month name and header.
Let me describe my solution to this problem, not so that you can try to match it exactly, but so that you'll know if you are going way off into the wrong direction. I had 8 functions all together including main. 4 of them were 5 lines or less. 2 of them were fairly long functions but only because they were switch statements with 12 branches -- hard if not impossible to decompose further. That leaves 2 functions which were 8 - 10 lines long. One of these was the printMonth function.
When I count lines I count only the body of the function and I don't count declaration statements or blank lines or comments, but I do count a line if it has only a } on it.
Make sure each of your functions performs a single logical task (not two). If you find yourself trying to name a function with the word AND, it probably means the function should be divided into two.
Printing out the month names: They don't need to be centered. Each month name should start right above the letter "T", as illustrated in the sample output.
Best place is at the point where you realise this isn't a homework site and showing us where you are having problems etc with work you have put in. Cut and paste the assignment doesn't count.
Everybody here is glad to help when you get off the starting blocks :)