Introduction

Reverend Zeller developed a formula for computing the day of the week on which a given date fell or will fall. Suppose that we let a, b, c and d be integers defined as follows:

a = the number of the month of the year, with March = 1, April = 2, and so on, with

January and February being counted as month 11 and 12 of the preceding year

b = the day of the month

c = the year of the century

d = century

For example, July 31, 1929 gives a = 5, b = 31, c = 29, d = 19; January 3, 1988 gives a = 11, b = 3, c = 87, d = 19. Now calculate the following integer quantities:

w = the integer quotient (13a – 1)/5

x = the integer quotient c/4

y = the integer quotient d/4

z = w + x + y + b + c – 2d

r = z reduced modulo 7; that is, r is the remainder of z divided by 7; r = 0 represents

Sunday; r = 1 represents Monday, and so on.

Specific Instructions

Implement a MyDate class to represent a date. The input has to be read as a string using an overloaded input operator. Preferably, no accessor function should be used to set the values of the data members. While reading the specified date, your program should validate the format i.e. while July 31, 1929 would be correct, 7/31/29, July 31, 29, 31/7/29 for example would be incorrect. The MyDate object should be able to find its own day of the week! Write a test program that illustrates the use of your MyDate class. The input to test the program should include the following:

July 31, 1929

January 3, 1988

March 21, 05

December 12, 1960

9/31/2005

July 4, 1776

January 1, 1991

Include all the source code (well documented) and input files and sufficient representative output.