#include<iostream.h>#include<iomanip.h>using namespace std;class date{ int dd; int mm; int yy; int day; friend istream& operator>>(istream&, date&); friend ostream& operator<<(ostream&, date&); void setday(); public: int getdate(){ return dd;} int getmon(){ return mm;} int getyear(){ return yy;} int getday(){ return day;}};void date::setday(){ int q=dd,m,y=yy; if(mm==1||mm==2) { m=mm+12; y--; } else m=mm; int K=y%100, J=y/100; day=(q+((m+1)*26)/10+K+K/4+J/4+5*J)%7; //Zeller's Congruence}istream& operator>>(istream &is, date &a){ char ch; is>>ch; is.putback(ch); is>>a.dd; is.get(); is>>a.mm; is.get(); is>>a.yy; a.setday(); return is;}ostream& operator<<(ostream &os, date &a){ switch(a.day) { case 0 : os<<"Saturday, "; break; case 1 : os<<"Sunday, "; break; case 2 : os<<"Monday, "; break; case 3 : os<<"Tuesday, "; break; case 4 : os<<"Wednesday, "; break; case 5 : os<<"Thursday, "; break; case 6 : os<<"Friday, "; break; } os<<setfill('0')<<setw(2)<<a.dd; switch(a.mm) { case 1 : os<<" January "; break; case 2 : os<<" February "; break; case 3 : os<<" March "; break; case 4 : os<<" April "; break; case 5 : os<<" May "; break; case 6 : os<<" June "; break; case 7 : os<<" July "; break; case 8 : os<<" August "; break; case 9 : os<<" September "; break; case 10 : os<<" October "; break; case 11 : os<<" November "; break; case 12 : os<<" December "; break; } os<<setw(4)<<a.yy<<setfill(' '); return os;}int main(){ date d; cout<<"Enter a date (dd/mm/yy) : "; cin>>d; cout<<"\n\nEntered date :\n\n"<<d<<"\n\n"; system("pause");}