Header image  
AN OBSESSION IN COMPUTING  
line decor
  HOME  ::  
line decor
   
 
Day Of The Week
/* Code that will calculate the day-of-the-week for a specified date between the following dates 01:01:1800 - 31:12:1999.
Updated - 09.12.2001 */


#include <stdio.h>
#include <stdlib.h>

/* True false constants*/
#ifndef TRUE
  #define TRUE 1
#endif
#ifndef FALSE
  #define FALSE 0
#endif

int main (void)
{   int     day = 0,
            month = 0,
            year = 0,
            day_of_week = 0,
            leap_year = 0;
            ret_val = 0;

    while ( ret_val != 3 )
    {   printf("Enter a date between 01:01:1800 - 31:12:1999 (DD:MM:YYYY) > ");
        scanf("%d:%d:%d",&day,&month,&year);
    }

    printf("Enter a date between 01:01:1800 - 31:12:1999 (DD:MM:YYYY) > ");
    scanf("%d:%d:%d",&day,&month,&year);

    /*Get last two digits of year and add a quater of it*/
    day_of_week = (year % 100) + ((year % 100) * 0.25);

    /*Add day of the month*/
    day_of_week += day;

    /*Check for leap year*/
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
        leap_year = TRUE;
    else
        leap_year = FALSE;

    /*Those months with a missing case have nothing added to them*/
    switch (month)
    {   case 1:
            if (leap_year == FALSE)
            day_of_week += 1;
            break;
        case 2:
            if (leap_year == TRUE)
                day_of_week += 3;
            else
                day_of_week += 4;
            break;
        case 3:
            day_of_week += 4;
            break;
        case 5:
            day_of_week += 2;
            break;
        case 6:
            day_of_week += 5;
            break;
        case 8:
            day_of_week += 3;
            break;
        case 9:
            day_of_week += 6;
            break;
        case 10:
            day_of_week += 1;
            break;
        case 11:
            day_of_week += 4;
            break;
        case 12:
            day_of_week += 6;
            break;
    }

    /* Add 2 if year is between 1800 - 1899 */
    if ( year < 1900 )
        day_of_week += 2;

    day_of_week = day_of_week % 7;

    /* Find out what day of week it is */
    switch (day_of_week)
    {   case 1:
            printf("%d:%d:%d was a Sunday\n", day, month, year);
            break;
        case 2:
            printf("%d:%d:%d was a Monday\n", day, month, year);
            break;
        case 3:
            printf("%d:%d:%d was a Tuesday\n", day, month, year);
            break;
        case 4:
            printf("%d:%d:%d was a Wednesday\n", day, month, year);
            break;
        case 5:
            printf("%d:%d:%d was a Thursday\n", day, month, year);
            break;
        case 6:
            printf("%d:%d:%d was a Friday\n", day, month, year);
            break;
        case 0:
            printf("%d:%d:%d was a Saturday\n", day, month, year);
            break;
    }
    return EXIT_SUCCESS;
}

 
       

© Copyright 1999-2008 @incubus. All Rights Reserved. All trademarks acknowledged.
incubus.co.uk || zenithpaints.co.uk || rankinstine.co.uk