Learn to Code
John F. Dumas
contact me | resume | how it works | example programs | testimonials | main page

C++ - Calendar


► Problem Description: Author a c++ program that can output a calendar for any year (or month) from the year 1 to the year 9999. The program should handle leap years correctly and should also address the switchover from the Julian to the Gregorian calendar in 1752.


► Example Output:

Here's the program's output for 2021.

                               2021                                

       January               February                 March        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
                1  2       1  2  3  4  5  6       1  2  3  4  5  6 
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 13 
10 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 20 
17 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 27 
24 25 26 27 28 29 30   28                     28 29 30 31          
31                                                                 
        April                   May                   June         
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
             1  2  3                      1          1  2  3  4  5 
 4  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 12 
11 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 19 
18 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 26 
25 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 30          
                       30 31                                       
        July                  August                September      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
             1  2  3    1  2  3  4  5  6  7             1  2  3  4 
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 11 
11 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 18 
18 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 25 
25 26 27 28 29 30 31   29 30 31               26 27 28 29 30       
                                                                   
       October               November               December       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
                1  2       1  2  3  4  5  6             1  2  3  4 
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 11 
10 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 18 
17 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 25 
24 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31    
31                                                                 

Here's an example showing the correct output for the year 2100 (which will not be a leap year).

                               2100                                

       January               February                 March        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
                1  2       1  2  3  4  5  6       1  2  3  4  5  6 
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 13 
10 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 20 
17 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 27 
24 25 26 27 28 29 30   28                     28 29 30 31          
31                                                                 
        April                   May                   June         
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
             1  2  3                      1          1  2  3  4  5 
 4  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 12 
11 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 19 
18 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 26 
25 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 30          
                       30 31                                       
        July                  August                September      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
             1  2  3    1  2  3  4  5  6  7             1  2  3  4 
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 11 
11 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 18 
18 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 25 
25 26 27 28 29 30 31   29 30 31               26 27 28 29 30       
                                                                   
       October               November               December       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
                1  2       1  2  3  4  5  6             1  2  3  4 
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 11 
10 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 18 
17 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 25 
24 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31    
31                                                                 

And finally, here's the infamous year 1752 when the Julian to Gregorian switch occurred in the US, Canada and the United Kingdom.

                               1752                                

       January               February                 March        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
          1  2  3  4                      1    1  2  3  4  5  6  7 
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    8  9 10 11 12 13 14 
12 13 14 15 16 17 18    9 10 11 12 13 14 15   15 16 17 18 19 20 21 
19 20 21 22 23 24 25   16 17 18 19 20 21 22   22 23 24 25 26 27 28 
26 27 28 29 30 31      23 24 25 26 27 28 29   29 30 31             
                                                                   
        April                   May                   June         
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
          1  2  3  4                   1  2       1  2  3  4  5  6 
 5  6  7  8  9 10 11    3  4  5  6  7  8  9    7  8  9 10 11 12 13 
12 13 14 15 16 17 18   10 11 12 13 14 15 16   14 15 16 17 18 19 20 
19 20 21 22 23 24 25   17 18 19 20 21 22 23   21 22 23 24 25 26 27 
26 27 28 29 30         24 25 26 27 28 29 30   28 29 30             
                       31                                          
        July                  August                September      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
          1  2  3  4                      1          1  2 14 15 16 
 5  6  7  8  9 10 11    2  3  4  5  6  7  8   17 18 19 20 21 22 23 
12 13 14 15 16 17 18    9 10 11 12 13 14 15   24 25 26 27 28 29 30 
19 20 21 22 23 24 25   16 17 18 19 20 21 22                        
26 27 28 29 30 31      23 24 25 26 27 28 29                        
                       30 31                                       
       October               November               December       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa 
 1  2  3  4  5  6  7             1  2  3  4                   1  2 
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    3  4  5  6  7  8  9 
15 16 17 18 19 20 21   12 13 14 15 16 17 18   10 11 12 13 14 15 16 
22 23 24 25 26 27 28   19 20 21 22 23 24 25   17 18 19 20 21 22 23 
29 30 31               26 27 28 29 30         24 25 26 27 28 29 30 
                                              31                   


Source code


Back to Example Program Index


© John F. Dumas | johnfdumas@gmail.com | main page | top of page