Day by Date

Description:

"Computation of the date either previous or forthcoming dates is quiet easy. But it is quiet difficult to calculate the day from a particular given date. You are required to find a day from a particular date given to you. Input It consists of a single line entry consisting of date in format dd mm yyyy. i.e. the input line consists of the three numbers written in order followed by spaces. Eg. Input for 18-12-1990 is be written as 18 12 1990 Output It consists of single line output showing the day for that particular date. " Test Case 1 Input (stdin) 14 3 2012 Expected Output Wednesday Test Case 2 Input (stdin) 25 01 2011 Expected Output Tuesday

Program :

#include<stdio.h>

int main()

{

int month[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},i,d,m,y;

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

            scanf("%d %d %d", &d, &m, &y);

    if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0))

    month[1] = 29;

     

    if (y < 1900 || m < 1 || m > 12 || d < 1 || d > month[m - 1]) {

    // printf("This is an invalid date.\n");

    return 1;

    }

     

    for (i = 1900; i < y; i++)

    if (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0))

    d += 366;

    else

    d += 365;

     

    for (i = 0; i < m - 1; i++)

    d += month[i];

     

    printf("%s\n", day[d % 7]);

    return 0;

}