Hi,

Though an easy one I made this program with my own logic.The program determines what day it is on a particular date For ex- Thursday on 12 july 2012.

I tested it and gave the correct output. Hope it gives the correct output always

Code:#include<stdio.h> #include<conio.h> /*Function to calculate whether the entered date is correct or not*/ int correct_date_calc(int day, int month, int year) { const int ref_year=2012; int lp_yr_flg=0; if(year<=2012) { if(((ref_year - year)%4) == 0) { lp_yr_flg=1; } } else if(year>2012) { if(((year - ref_year)%4) == 0) { lp_yr_flg=1; } } if(month>12 || month<1) { return 0; } if((lp_yr_flg==1) && (month==2) && (day>29)) { return 0; } else if((lp_yr_flg==0) && (month==2) && (day>28)) { return 0; } else if(((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12)) && (day>31 || day<1)) { return 0; } else if(((month == 4) || (month == 6) || (month == 9) || (month ==11)) && (day>30 || day<1)) { return 0; } return 1; } /*Function to Calculate leap year*/ int leap_year_calc(int year_lp) { const int ref_year=2012; int lp_yr_flg=0; if(year_lp<=2012) { if(((ref_year - year_lp)%4) == 0) { lp_yr_flg=1; return lp_yr_flg; } } else if(year_lp>2012) { if(((year_lp - ref_year)%4) == 0) { lp_yr_flg=1; return lp_yr_flg; } } return 0; } /*Fucntion to Calculate the given days in a month*/ int no_of_days(int month, int year) { int day=0; int leap_yr = 0; leap_yr = leap_year_calc(year); if((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12)) { day=31; return day; } else if((month == 4) || (month == 6) || (month == 9) || (month ==11)) { day=30; return day; } else if((month == 2) && (leap_yr == 1)) { day=29; return day; } else if((month == 2) && (leap_yr == 0)) { day=28; return day; } } /*Function to calculate the day before the reference date. Here it is 31/12/2012.*/ int bef_ref_date(int day_bef,int month_bef,int year_bef) { int day_dec,year_dec,month_dec=12,day=1; for(year_dec=2012; year_dec>=year_bef; year_dec--) { for(month_dec=12; month_dec>=1; month_dec--) { for(day_dec=no_of_days(month_dec, year_dec); day_dec>=1; day_dec--) { if(year_dec==year_bef && month_dec==month_bef && day_dec==day_bef) { return day; } day--; if(day==0) { day=7; } } } } } /*Function to calculate the day after the reference date. Here it is 1/1/2012.*/ int aft_ref_date(int day_aft,int month_aft,int year_aft) { int day_inc, year_inc, month_inc=1, day=1, month_day_lim; for(year_inc=2012; year_inc<=year_aft; year_inc++) { for(month_inc=1; month_inc<=12; month_inc++) { month_day_lim = no_of_days(month_inc, year_inc); for(day_inc=1; day_inc<=month_day_lim; day_inc++) { if(year_inc==year_aft && month_inc==month_aft && day_inc==day_aft) { return day; } day++; if(day==8) { day=1; } } } } } void main() { int day, month, year, day_date, crct_date_flg=0; const int ref_year = 2012; printf("Enter the Day "); scanf("%d",&day); printf("\nEnter the Month "); scanf("%d",&month); printf("\nEnter the year "); scanf("%d",&year); crct_date_flg = correct_date_calc(day, month, year); clrscr(); if(crct_date_flg == 0) { printf("Date Entered is an Invalid Date!!"); getch(); } clrscr(); if(crct_date_flg==1) { if(year <= ref_year) { day_date = bef_ref_date(day, month, year); switch (day_date) { case 1: printf("The day was Monday"); break; case 2: printf("The day was Tuesday"); break; case 3: printf("The day was Wednesday"); break; case 4: printf("The day was Thursday"); break; case 5: printf("The day was Friday"); break; case 6: printf("The day was Saturday"); break; case 7: printf("The day was Sunday"); break; } } else if (year > ref_year) { day_date = aft_ref_date(day, month, year); switch (day_date) { case 1: printf("The day is Sunday"); break; case 2: printf("The day is Monday"); break; case 3: printf("The day is Tuesday"); break; case 4: printf("The day is Wednesday"); break; case 5: printf("The day is Thursday"); break; case 6: printf("The day is Friday"); break; case 7: printf("The day is Saturday"); break; } } getch(); clrscr(); } }