GeekInterview.com
  I am new, Sign me up!
 
GeekInterview.com  >  Tech FAQs  >  OOPS
Go To First  |  Previous Question  |  Next Question 
 OOPS  |  Question 2 of 258    Print  
How can I find the day of the week given the date?

  
Total Answers and Comments: 3 Last Update: July 24, 2006   
  
 Sponsored Links

 
 Best Rated Answer
Submitted by: Neelam Sharma
 

#include <stdio.h>
#include <string.h>
/* Prototype Declaration */
int validateDate(int dd, int mm, int yyyy);
void printError();
int calcDay_Dec31(int yyyy);
int dayInYear(int dd, int mm);
void nameInStr (char daysInWord[], int days);
void main(void)
{
     int dd, mm, yyyy;
     int days;
     char daysInWord[11];
     
     /* Read a date and validate the date */


         do{
          printf("Enter a date(dd/mm/yyyy) :");
          scanf("%d / %d / %d", &dd, &mm ,&yyyy);
          fflush(stdin);
         }
         
         while(validateDate(dd, mm, yyyy));
         
         /* Calculate the day for Dec 31 of the previous year */
         days = calcDay_Dec31(yyyy);
         /* Calculate the day for the given date */
         days = (dayInYear(dd, mm) + days) % 7;
         /* Add one day if the year is leap year and desired date is after February */
         if ((!(yyyy % 4) && (yyyy % 100) || !(yyyy % 400)) && mm > 2)
          days++;
         nameInStr(daysInWord, days);
         /* Print the day of the desired date */
         printf("The day for date %d/%d/%d is %snn", dd, mm, yyyy, daysInWord);
} /* main */

int validateDate(int dd, int mm, int yyyy)
{
         int i = 0, j = 0;
         int a[7] = {1, 3, 5, 7, 8, 10, 12};
         int b[4] = {4, 6, 9, 11};
         int error = 0;
         if (mm < 1 || mm > 12)
          error = 1;
         
         
         if (mm == 2)


             {
              if (!(yyyy % 4) && (yyyy % 100) || !(yyyy % 400))


                  {
                   if (dd < 1 || dd > 29)
                    error = 1;
                       
                  }
                  else if (dd < 1 || dd >28)
                   error = 1;
                 }
                 
                 for (i=0;i<6;i+=1)
                 { 
                  if (mm == a[i])


                      {
                       if (dd < 1 || dd > 31)
                        error = 1;
                      }
                     }
                     for (j=0;j<4;j+=1)


                         {
                          if (mm == b[j])


                              {
                               if (dd < 1 || dd > 30)
                                error = 1;
                              }
                             }
                             if (error == 1)
                              printError();
                             return error;
                        }
                        void printError()


                            {
                             printf("Invalid Input!nn");
                        }
                        int calcDay_Dec31(int yyyy)


                            {
                             int dayCode = 0;
                             dayCode = ((yyyy-1)*365 + (yyyy-1)/4 - (yyyy-1)/100 + (yyyy-1)/400) % 7;
                             return dayCode;
                        } /* calcDay_Dec31 */
                        int dayInYear(int dd, int mm)


                            {
                             switch(mm)


                                 {
                                 case 12:dd += 30;
                                 case 11:dd += 31;
                                 case 10:dd += 30;
                                 case 9:dd += 31;
                                 case 8:dd += 31;
                                 case 7:dd += 30;
                                 case 6:dd += 31;
                                 case 5:dd += 30;
                                 case 4:dd += 31;
                                 case 3:dd += 28;
                                 case 2:dd += 31;
                                 }
                                 return dd;
                            } /* dayInYear */
void nameInStr(char daysInWord[], int days)
{
switch(days)


{
case 0:strcpy(daysInWord, "Sunday");break;
case 1:strcpy(daysInWord, "Monday");break;
case 2:strcpy(daysInWord, "Tuesday");break;
case 3:strcpy(daysInWord, "Wednesday");break;
case 4:strcpy(daysInWord, "Thursday");break;
case 5:strcpy(daysInWord, "Friday");break;
case 6:strcpy(daysInWord, "Saturday");break;
                                     }
} /* nameInStr */



Above answer was rated as good by the following members:
gunturi.prabhakar
October 18, 2005 01:59:52   #1  
GOurav Wadhwa        

RE: How can I find the day of the week given the date...

void main()

{


 
Is this answer useful? Yes | NoAnswer is useful 0   Answer is not useful 1Overall Rating: -1    
April 27, 2006 09:10:05   #2  
Yashwant Pinge        

RE:
There are functions api in time.h header file
 
Is this answer useful? Yes | No
July 24, 2006 08:42:14   #3  
Neelam Sharma        

RE: How can I find the day of the week given the date...

#include <stdio.h>
#include <string.h>
/* Prototype Declaration */
int validateDate(int dd int mm int yyyy);
void printError();
int calcDay_Dec31(int yyyy);
int dayInYear(int dd int mm);
void nameInStr (char daysInWord[] int days);
void main(void)
{
int dd mm yyyy;
int days;
char daysInWord[11];

/* Read a date and validate the date */


do{
printf( Enter a date(dd/mm/yyyy) : );
scanf( d / d / d &dd &mm &yyyy);
fflush(stdin);
}

while(validateDate(dd mm yyyy));

/* Calculate the day for Dec 31 of the previous year */
days calcDay_Dec31(yyyy);
/* Calculate the day for the given date */
days (dayInYear(dd mm) + days) 7;
/* Add one day if the year is leap year and desired date is after February */
if ((!(yyyy 4) && (yyyy 100) || !(yyyy 400)) && mm > 2)
days++;
nameInStr(daysInWord days);
/* Print the day of the desired date */
printf( The day for date d/ d/ d is snn dd mm yyyy daysInWord);
} /* main */

int validateDate(int dd int mm int yyyy)
{
int i 0 j 0;
int a[7] {1 3 5 7 8 10 12};
int b[4] {4 6 9 11};
int error 0;
if (mm < 1 || mm > 12)
error 1;


if (mm 2)


{
if (!(yyyy 4) && (yyyy 100) || !(yyyy 400))


{
if (dd < 1 || dd > 29)
error 1;

}
else if (dd < 1 || dd >28)
error 1;
}

for (i 0;i<6;i+ 1)
{
if (mm a[i])


{
if (dd < 1 || dd > 31)
error 1;
}
}
for (j 0;j<4;j+ 1)


{
if (mm b[j])


{
if (dd < 1 || dd > 30)
error 1;
}
}
if (error 1)
printError();
return error;
}
void printError()


{
printf( Invalid Input!nn );
}
int calcDay_Dec31(int yyyy)


{
int dayCode 0;
dayCode ((yyyy-1)*365 + (yyyy-1)/4 - (yyyy-1)/100 + (yyyy-1)/400) 7;
return dayCode;
} /* calcDay_Dec31 */
int dayInYear(int dd int mm)


{
switch(mm)


{
case 12:dd + 30;
case 11:dd + 31;
case 10:dd + 30;
case 9:dd + 31;
case 8:dd + 31;
case 7:dd + 30;
case 6:dd + 31;
case 5:dd + 30;
case 4:dd + 31;
case 3:dd + 28;
case 2:dd + 31;
}
return dd;
} /* dayInYear */
void nameInStr(char daysInWord[] int days)
{
switch(days)


{
case 0:strcpy(daysInWord Sunday );break;
case 1:strcpy(daysInWord Monday );break;
case 2:strcpy(daysInWord Tuesday );break;
case 3:strcpy(daysInWord Wednesday );break;
case 4:strcpy(daysInWord Thursday );break;
case 5:strcpy(daysInWord Friday );break;
case 6:strcpy(daysInWord Saturday );break;
}
} /* nameInStr */


 
Is this answer useful? Yes | NoAnswer is useful 1   Answer is not useful 0Overall Rating: +1    


 
Go To Top


 Sponsored Links

 
About Us -  Privacy Policy -  Terms and Conditions -  Contact -  Ask Question -  Propose Category -  Site Updates 

Copyright © 2005 - 2009 GeekInterview.com. All Rights Reserved

Page copy protected against web site content infringement by Copyscape