mon code sert pour savoir le jour a partir de la date exprimée sous la forme mm/jj/yyyy
mm : mois
jj : jour
yyyy : Annee
il prend en consideration que leapYear avant 1732 sont les multiples de 4 seulement!
Source / Exemple :
#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;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.