#include <stdio.h>
#include <string.h>
int isValidDate(int,int,int);
int isLeap(int);
void getDay(int, int, int, char *);
int main(void)
{
int dd, mm, yy;
char weekday[15];
printf("\nEnter Date ( dd mm yy ) : ");
scanf("%d%d%d", &dd, &mm, &yy);
if(isValidDate(dd,mm,yy))
{
getDay(dd, mm, yy, weekday);
printf("\n%s", weekday);
}
else
printf("\nInvalid date");
return 0;
}
int isValidDate(int day,int month,int year)
{
if(year >= 1)
{
if((day >= 1 && day <= 31) &&
(month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12))
{
return 1;
}
else if((day >= 1 && day <= 30) &&
(month == 4 || month == 6 || month == 9 || month == 11))
{
return 1;
}
else if((day >= 1 && day <= 29) && (month == 2) && isLeap(year))
{
return 1;
}
else if((day >= 1 && day <= 28) && (month == 2))
{
return 1;
}
}
return 0;
}
int isLeap(int year)
{
return (year % 100 == 0 && year % 400 == 0) ||
(year % 100 != 0 && year % 4 == 0) ? 1 : 0;
}
void getDay(int dd, int mm, int yy, char *day)
{
int mmdays, dddays, leapdays, dayno, i;
long int yydays, totdays;
/* Step 1 : Calculate days due to elapsed years */
yydays = (yy - 1) * 365L;
/* Step 2 : Calculate days due to elapsed months */
switch(mm)
{
case 1: mmdays = 0; break;
case 2: mmdays = 31; break;
case 3: mmdays = 31+28; break;
case 4: mmdays = 31+28+31; break;
case 5: mmdays = 31+28+31+30; break;
case 6: mmdays = 31+28+31+30+31; break;
case 7: mmdays = 31+28+31+30+31+30; break;
case 8: mmdays = 31+28+31+30+31+30+31; break;
case 9: mmdays = 31+28+31+30+31+30+31+31; break;
case 10: mmdays = 31+28+31+30+31+30+31+31+30; break;
case 11: mmdays = 31+28+31+30+31+30+31+31+30+31; break;
case 12: mmdays = 31+28+31+30+31+30+31+31+30+31+30; break;
}
/* Step 3 : Calculate days due to elapsed date */
dddays = dd - 1 ;
/* Step 4 : Account for leap days */
/* Step 4a : Leap days due to elapsed years */
/* leapdays = (yy-1)/4 - (yy-1)/100 + (yy-1)/400 ; */
for(i = 1, leapdays = 0 ; i < yy ; i++ )
if( i % 400 == 0 || (i % 100 != 0 && i % 4 == 0 ) )
leapdays++;
/* Step 4b : Leap day due to present year */
if( yy % 400 == 0 || ( yy % 100 != 0 && yy % 4 == 0 ) )
leapdays = leapdays + ( mm > 2 ? 1 : 0 );
totdays = yydays+mmdays+dddays+leapdays ;
dayno = totdays % 7;
switch(dayno)
{
case 0 : strcpy(day, "Monday"); break;
case 1 : strcpy(day, "Tueday"); break;
case 2 : strcpy(day, "Wednesay"); break;
case 3 : strcpy(day, "Thursday"); break;
case 4 : strcpy(day, "Friday"); break;
case 5 : strcpy(day, "Saturday"); break;
case 6 : strcpy(day, "Sunday"); break;
}
}
#include <string.h>
int isValidDate(int,int,int);
int isLeap(int);
void getDay(int, int, int, char *);
int main(void)
{
int dd, mm, yy;
char weekday[15];
printf("\nEnter Date ( dd mm yy ) : ");
scanf("%d%d%d", &dd, &mm, &yy);
if(isValidDate(dd,mm,yy))
{
getDay(dd, mm, yy, weekday);
printf("\n%s", weekday);
}
else
printf("\nInvalid date");
return 0;
}
int isValidDate(int day,int month,int year)
{
if(year >= 1)
{
if((day >= 1 && day <= 31) &&
(month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12))
{
return 1;
}
else if((day >= 1 && day <= 30) &&
(month == 4 || month == 6 || month == 9 || month == 11))
{
return 1;
}
else if((day >= 1 && day <= 29) && (month == 2) && isLeap(year))
{
return 1;
}
else if((day >= 1 && day <= 28) && (month == 2))
{
return 1;
}
}
return 0;
}
int isLeap(int year)
{
return (year % 100 == 0 && year % 400 == 0) ||
(year % 100 != 0 && year % 4 == 0) ? 1 : 0;
}
void getDay(int dd, int mm, int yy, char *day)
{
int mmdays, dddays, leapdays, dayno, i;
long int yydays, totdays;
/* Step 1 : Calculate days due to elapsed years */
yydays = (yy - 1) * 365L;
/* Step 2 : Calculate days due to elapsed months */
switch(mm)
{
case 1: mmdays = 0; break;
case 2: mmdays = 31; break;
case 3: mmdays = 31+28; break;
case 4: mmdays = 31+28+31; break;
case 5: mmdays = 31+28+31+30; break;
case 6: mmdays = 31+28+31+30+31; break;
case 7: mmdays = 31+28+31+30+31+30; break;
case 8: mmdays = 31+28+31+30+31+30+31; break;
case 9: mmdays = 31+28+31+30+31+30+31+31; break;
case 10: mmdays = 31+28+31+30+31+30+31+31+30; break;
case 11: mmdays = 31+28+31+30+31+30+31+31+30+31; break;
case 12: mmdays = 31+28+31+30+31+30+31+31+30+31+30; break;
}
/* Step 3 : Calculate days due to elapsed date */
dddays = dd - 1 ;
/* Step 4 : Account for leap days */
/* Step 4a : Leap days due to elapsed years */
/* leapdays = (yy-1)/4 - (yy-1)/100 + (yy-1)/400 ; */
for(i = 1, leapdays = 0 ; i < yy ; i++ )
if( i % 400 == 0 || (i % 100 != 0 && i % 4 == 0 ) )
leapdays++;
/* Step 4b : Leap day due to present year */
if( yy % 400 == 0 || ( yy % 100 != 0 && yy % 4 == 0 ) )
leapdays = leapdays + ( mm > 2 ? 1 : 0 );
totdays = yydays+mmdays+dddays+leapdays ;
dayno = totdays % 7;
switch(dayno)
{
case 0 : strcpy(day, "Monday"); break;
case 1 : strcpy(day, "Tueday"); break;
case 2 : strcpy(day, "Wednesay"); break;
case 3 : strcpy(day, "Thursday"); break;
case 4 : strcpy(day, "Friday"); break;
case 5 : strcpy(day, "Saturday"); break;
case 6 : strcpy(day, "Sunday"); break;
}
}
No comments:
Post a Comment
kiss on google ads if you are anonymous because your ip is trackable.thank you.
......from.admin