Skip to main content

Program to find day on a particular date

Program to find day on a particular date


CODE
👇
  1. #include<stdio.h>

  2. int isLeapYear(int year){
  3.     if(year%4==0){
  4.         if(year%100==0 && year%400!=0){
  5.             return 0;
  6.         }
  7.         else{
  8.             return 1;
  9.         }
  10.     }
  11.     else{
  12.         return 0;
  13.     }
  14. }

  15. int main() {
  16.     int year, i;
  17.     int refYear=1600, leap=0;
  18.     int diff, totalDays,day,month, oddDays;
  19.     int lYear[]={3,1,3,2,3,2,3,3,2,3,2,3};
  20.         int nYear[]={3,0,3,2,3,2,3,3,2,3,2,3};
  21.     char  week[7][10]={"sunday",
  22.                    "monday",
  23.                    "tuesday",
  24.                    "wednesday"
  25.                    ,"thursday"
  26.                    ,"friday",
  27.                    "saturday"};
  28.      printf("Enter a date between  1600 to 3000\n");
  29.       scanf("%d%d%d",&day,&month,&year);
  30.     diff = year - refYear;
  31.     while(refYear < year){
  32.         if(isLeapYear(refYear))
  33.             leap++;
  34.         refYear++;
  35.     }
  36.     totalDays = leap*366 + (diff-leap)*365;
  37.     oddDays = totalDays%7;
  38.      
  39.     if(isLeapYear(year)){
  40.         for( i=0;i<month-1;i++){
  41.             oddDays+=lYear[i];
  42.         }
  43.         oddDays+=day%7;
  44.     }
  45.     else{
  46.         for( i=0;i<month-1;i++){
  47.             oddDays+=nYear[i];
  48.         }
  49.         oddDays+=day%7;
  50.     }
  51.     printf("Day on %d/%d/%d ",day,month,year);
  52.     printf("%s",week[(5+oddDays)%7]);
  53.     return 0;
  54. }