- #include<stdio.h>
-
- bool isleap(int n){
- if(n<1732)
- return (!(n%4));
- return (!(n%4)&&(n%100))||!(n%400);
- }
- int mounths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
- char *days[7]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
- char* M[]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
-
-
- bool isvalide(int m,int d,int y){
- if(d > 2 && d < 14 && m == 9 && y == 1752)
- return false;
- return ( d <= mounths[m]+isleap(y)*(m == 2) && m < 13 );
- }
- int main(){
- int d,m,y;
- printf("Enter the date that you want to know the correspondant day of week in this
- form : mm dd yyyy\n mm:mounth \n dd : day\n yyyy:year\n");//ligne ajoutée en réponse a la demande de "ndubien"
-
-
- scanf("%d%d%d",&m,&d,&y);
- while(m != 0 && d != 0 && y != 0){
- if(!isvalide(m,d,y))
- printf("%d/%d/%d is an invalid date.\n",m,d,y);
- else{
- long L=0;
- for(int i=1;i<y;i++)
- L+=365+isleap(i);
- for(int i=1;i<m;i++)
- if(i == 2)
- L+=28+isleap(y);
- else
- L+=mounths[i];
- L+=d+4;
- L-=11*((y>1752) || (y==1752 && m>9) ||(y==1752 && m==9 && d>2));
-
- L%=7;
- printf("%s %d, %d is a %s\n",M[m],d,y,days[L]);
-
- }
- scanf("%d%d%d",&m,&d,&y);
- }
-
-
- return 0;
-
- }
#include<stdio.h>
bool isleap(int n){
if(n<1732)
return (!(n%4));
return (!(n%4)&&(n%100))||!(n%400);
}
int mounths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char *days[7]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
char* M[]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
bool isvalide(int m,int d,int y){
if(d > 2 && d < 14 && m == 9 && y == 1752)
return false;
return ( d <= mounths[m]+isleap(y)*(m == 2) && m < 13 );
}
int main(){
int d,m,y;
printf("Enter the date that you want to know the correspondant day of week in this
form : mm dd yyyy\n mm:mounth \n dd : day\n yyyy:year\n");//ligne ajoutée en réponse a la demande de "ndubien"
scanf("%d%d%d",&m,&d,&y);
while(m != 0 && d != 0 && y != 0){
if(!isvalide(m,d,y))
printf("%d/%d/%d is an invalid date.\n",m,d,y);
else{
long L=0;
for(int i=1;i<y;i++)
L+=365+isleap(i);
for(int i=1;i<m;i++)
if(i == 2)
L+=28+isleap(y);
else
L+=mounths[i];
L+=d+4;
L-=11*((y>1752) || (y==1752 && m>9) ||(y==1752 && m==9 && d>2));
L%=7;
printf("%s %d, %d is a %s\n",M[m],d,y,days[L]);
}
scanf("%d%d%d",&m,&d,&y);
}
return 0;
}