The class should be capable of storing, manipulating and printing dates. Dates can be initialized by assigning 3 numbers  the day, the month and the year (initially restricted to any date after 1st January 1900 and before the year 3000)
e.g. Date d1(26,3,1999);
Dates will be printed by either of two member functions:
d1.print_nz(); // outputs 26/03/1999
d1.print_text(); // outputs Friday, 26th March 1999
or by the overloaded << operator:
cout << d1; // outputs Friday, 26th March 1999
Dates can be manipulated by adding a number of days (from 0 to 999,999)  either by calling a function:
d1.add(1234);
or by using the overloaded + operator:
d2 = d1 + 1234;
#include <iostream.h>  #include <iostream.h>
#include "a3.h"  #include "a3.h"
using namespace B;  using namespace B;

int main() {  int main() {
Date d1(26,3,1999),d2;  Date d1(1,1,2000);

d1.print_nz();  d1.print_nz();
cout << endl;  cout << endl;
d2 = d1 + 6;  d1.add(999999);
cout << d2 << endl;  d1.print_text();
}  cout << endl;
 }
produces as output:
26/03/1999  01/01/2000
Thursday, 1st April 1999  Saturday, 27th November 4737
There are 365 days in a year, except for leap years, when there are 366. Leap years are all divisible by 4 and not 100, except that those divisible by 400 are leap years. So 2100 and 2200 are not leap years, 2000 2004 2008 2400 are leap years.
Zeller’s Congruence is a method for finding the day of the week of any given date. If a date is given in the form dd mm yyyy, then the day of the week d can be calculated using the following algorithm (a,b,c,d and m are all integers):
if mm is January or February then first subtract 1 from yyyy
a = the truncated value of (2.6m  0.2)
b = remainder when yyyy is divided by 100
c = yyyy/100
m is related to the month.
For March m has the value 1, April 2 ... December 10, January 11 and February 12.
d is the remainder when a + dd + b + b/4 + c/4  2c is divided by 7
if d is less than 0 then add 7 to d
d has the value 0 for Sunday, 1 for Monday, 2 for Tuesday etc.