GeekInterview.com
   Home |  Tech FAQ  |   Interview Questions |  Placement Papers |  Tech Articles |  Learn |  Freelance Projects |  Online Testing |  Geeks Talk |  Job Postings |  Knowledge Base | Site Search |  Add/Ask Question

GeekInterview.com  >  Tech FAQs  >  OOPS
Go To First  |  Previous Question  |  Next Question 
 OOPS  |  Question 2 of 255    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 | No
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  |   Site Map  |   Add Question  |   Propose Category  |   RSS Feeds  |   Articles Sitemap  |   Site Updates  |   Add Resource

Copyright © 2005 - 2008 GeekInterview.com. All Rights Reserved
Page copy protected against web site content infringement by Copyscape