// Date to day finder

/* DATA USED:

19 feb 2001 was a Monday.

Made by:

Ankit Rohatgi.

www.ankitrohatgi.com

LAST UPDATED : 19.2.2001

LINES : 99

*/

#include

#include

void main()

    { clrscr();

    int Ydiff,Ddiff,Mdiff;

    char *DAY[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

    int cd,cm,cy,cs,rd,rm,ry,rs,i;

    cd=19;cm=2;cy=2001;cs=2; // setting 19 feb 2001 , Monday

    cout<<"Enter REQUIRED date (DD MM YYYY) : ";

    cin>>rd>>rm>>ry;

    // difference in years

    Ydiff=cy-ry;

    // find no of leap years

    if(cy>=ry)

        { for(i=cy;i>=ry;i--)

            {

            if((i%100)==0) // for a century

                { if((i%400)==0) {Ydiff++;}

            }

            else

                { if((i%4)==0) {Ydiff++;}

            }

        }

    }

    else

        { for(i=cy;i

            { if((i%100)==0) // for a century

                { if((i%400)==0) {Ydiff--;}

            }

            else

                { if((i%4)==0) {Ydiff--;}

            }

        }

    }

    Ydiff=Ydiff%7;

    Ddiff=(cd-rd)%7;

    rs=cs-(Ydiff+Ddiff)%7;

    rs=rs%7;

    //difference in months

    Mdiff=cm-rm;

    if(Mdiff<0)

        { for(i=cm;i

            { switch(i)

                { case 1:rs+=3;break;

                 case 2:if((ry%4)==0) {rs++;}

                 break;

                 case 3:rs+=3;break;

                 case 4:rs+=2;break;

                 case 5:rs+=3;break;

                 case 6:rs+=2;break;

                 case 7:rs+=3;break;

                 case 8:rs+=3;break;

                 case 9:rs+=2;break;

                 case 10:rs+=3;break;

                 case 11:rs+=2;break;

                 default:break;

            }

        }

        rs=rs%7;

    }

    if(Mdiff>0)

        { for(i=cm;i>rm;i--)

            { switch(i)

                { case 2:rs-=3;break;

                 case 3:if(((ry-1)%4)==0) {rs--;}

                 break;

                 case 4:rs-=3;break;

                 case 5:rs-=2;break;

                 case 6:rs-=3;break;

                 case 7:rs-=2;break;

                 case 8:rs-=3;break;

                 case 9:rs-=3;break;

                 case 10:rs-=2;break;

                 case 11:rs-=3;break;

                 case 12:rs-=2;break;

                 default:break;

            }

        }

        rs=rs%7;

    }

    if(rs<=0) {rs=7+rs;}

    cout<<"It's a "<

    getch();

}