9/4/1752 is an invalid date.
9/5/1752 is an invalid date.
9/12/1752 is an invalid date.
Hope can help
dont take any input less 1 as a valid input
![:wink:](./images/smilies/icon_wink.gif)
Moderator: Board moderators
Sorry for interupption, but doesn't year 0 not exist?Ivan Golubev wrote:Output:Code: Select all
January 1, 0 is a Thursday January 1, 1 is a Saturday March 1, 401 is a Friday March 1, 801 is a Monday February 29, 1000 is a Thursday March 1, 1000 is a Friday 9/3/1752 is an invalid date. 9/13/1752 is an invalid date.
These days aren't exist in US calendar.raysa wrote:Do the days September 3rd 1752 until September 13th 1752 ever exist in the USA calendar?
Code: Select all
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int day,month,year,yearsbetween,weekday,daysbetween;
int flag=1;
while(flag){
scanf("%d %d %d",&month,&day,&year);
if(!month && !day && !year)
flag=0;
else if(year <= 0 || day > 31 || day <= 0 || month > 12 || month <= 0)
printf("%d/%d/%d is an invalid date.\n",month,day,year);
else if(month == 4 || month == 6 || month == 9 || month == 11)
if (day >= 31)
printf("%d/%d/%d is an invalid date.\n",month,day,year);
else if(((year > 1752 && month == 2 && (year % 4 != 0 || (year % 400 != 0 && year % 100 == 0)))
|| (year <= 1752 && year%4!=0 && month == 2)) && day > 28)
printf("%d/%d/%d is an invalid date.\n",month,day,year);
else if((year > 1752 && month==2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
|| (year <= 1752 && year%4 == 0 && month == 2))&& day > 29)
printf("%d/%d/%d is an invalid date.\n",month,day,year);
else{
daysbetween = 0;
yearsbetween = year-1;
if(year > 1752 || (year ==1752 && month > 9 ) || (year == 1752 && month == 9 && day >= 14))
daysbetween = yearsbetween * 365 + yearsbetween / 4 - (yearsbetween / 100 - yearsbetween / 400);
else
daysbetween = yearsbetween * 365 + yearsbetween / 4;
if(month <= 2)
daysbetween += (month-1)*31+day-1;
else if((year>1752 && ((year%4 == 0 && year%100!=0) || year%400==0))
|| year <=1752 && (year%4 == 0)){
if(month<=7){
if((month-1)%2==0)
daysbetween += (month-1)*30+(month-3)/2+day-1;
else
daysbetween += (month-1)*30+month/2-1+day-1;
}
else
daysbetween += 212+(month-8)*30+(month-7)/2+day;
}
else if((year>1752 && (year%4 != 0 || (year%100 == 0 && year%400 != 0)))
|| (year%4 != 0 && year<=1752)) {
if(month<=7){
if((month-1)%2==0)
daysbetween += (month-1)*30+(month-3)/2+day-2;
else
daysbetween += (month-1)*30+month/2-2+day-1;
}
else
daysbetween += 212+(month-8)*30+(month-7)/2+day-1;
}
switch(month){
case 1:
printf("January %d, %d is a ",day,year);
break;
case 2:
printf("February %d, %d is a ",day,year);
break;
case 3:
printf("March %d, %d is a ",day,year);
break;
case 4:
printf("April %d, %d is a ",day,year);
break;
case 5:
printf("May %d, %d is a ",day,year);
break;
case 6:
printf("June %d, %d is a ",day,year);
break;
case 7:
printf("July %d, %d is a ",day,year);
break;
case 8:
printf("August %d, %d is a ",day,year);
break;
case 9:
printf("September %d, %d is a ",day,year);
break;
case 10:
printf("October %d, %d is a ",day,year);
break;
case 11:
printf("November %d, %d is a ",day,year);
break;
case 12:
printf("December %d, %d is a ",day,year);
break;
}
weekday=0;
if(year > 1752 || (year ==1752 && month > 9 ) || (year == 1752 && month == 9 && day >= 14))
weekday = daysbetween%7;
else
weekday = (daysbetween + 5) % 7;
switch(weekday){
case 1:
printf("Tuesday\n");
break;
case 2:
printf("Wednesday\n");
break;
case 3:
printf("Thursday\n");
break;
case 4:
printf("Friday\n");
break;
case 5:
printf("Saturday\n");
break;
case 6:
printf("Sunday\n");
break;
case 0:
printf("Monday\n");
break;
}
}
}
return 0;
}