Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 516 fois - Téléchargée 21 fois
#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; }
Mis à part l'erreur de la 3ème ligne où il y a 1732 à la place de 1752, je vois que tu passes du calendrier julien au grégorien du 2 septembre 1752 au 14 septembre 1752. Il y a seulement les protestants anglais qui ont changé de calendrier à cette date. Le pape Grégoire a instauré le calendrier grégorien à partir du 4 octobre 1582 en passant directement au 15 octobre. Une grande partie de la France a attendu le mandement d'Henri III pour changer de calendrier en décembre 1582.
Peut être que ton inspiration vient des sources du système d'exploitation UNIX, mais ses créateurs, eux, étaient d'origine anglaise.
Cette source est interressante mais présentes de nombreux problèmes :
- Si, à la place du mois, à la place du jour, ou à la place de l'année, on met un caractère autre qu'un nombre, le programme ne répond plus à aucunes commandes et ne peut s'arrêter qu'en exercant un clic sur la croix en haut à droite de la fenêtre (sous windows).
- De plus afin de rendre ce code plus captivant il serait préférable de dire à l'utilisateur ce qu'il est censé mettre (un mois, un jour, ou une année).
Malgré ces quelques critiques, ce code semble bien fonctionner et peut s'avérer interressant pour certains.
Au revoir.
ndubien
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.