#include #include void main(int argc, char *argv[]){ int tab_annee[100]={2,3,4,5,0,1, 2,3,5,6,0,1, 3,4,5,6,1, 2,3,4,6,0,1, 2,4,5,6,0, 2,3,4,5,0,1, 2,3,5,6,0,1, 3,4,5,6,1, 2,3,4,6,0,1, 2,4,5,6,0, 2,3,4,5,0,1, 2,3,5,6,0,1, 3,4,5,6,1, 2,3,4,6,0,1, 2,4,5,6,0, 2,3,4,5,0,1, 2,3,5,6,0,1, 3,4,5,6}; int tab_mois[7][7]={{1,2,3,4,5,6,0}, {2,3,4,5,6,0,1}, {3,4,5,6,0,1,2}, {4,5,6,0,1,2,3}, {5,6,0,1,2,3,4}, {6,0,1,2,3,4,5}, {0,1,2,3,4,5,6}}; int tab_jour[7][7]={{6,7,1,2,3,4,5}, {7,1,2,3,4,5,6}, {1,2,3,4,5,6,7}, {2,3,4,5,6,7,1}, {3,4,5,6,7,1,2}, {4,5,6,7,1,2,3}, {5,6,7,1,2,3,4}}; char *jour_semaine[]={"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"}; int siecle, annee, mois, jour; int ind_annee; //contient l'indice de l'annee correspondante, entre 0 et 6 int ind_mois; //contient l'indice du mois correspondant, entre 0 et 6 int ind_jour; //contient l'indice du jour correspondant, entre 1 et 7 int bissextile; //vaut 1 si bissextile et 0 si non bissextile int journee; //contient le numero du jour resultat int calcul=1; //permet de sortir si la date entree est incorrecte char *str, *str_plus=""; sscanf(argv[1],"%d",&siecle); //19 ou 20 sscanf(argv[2],"%d",&annee); //entre 0 et 99 sscanf(argv[3],"%d",&mois); //entre 1 et 12 sscanf(argv[4],"%d",&jour); //entre 1 et 31 if(siecle==19) ind_annee=tab_annee[annee]; else ind_annee=tab_annee[annee]-1; if(ind_annee==-1) ind_annee=6; if(annee%4==0) bissextile=1; else bissextile=0; if(siecle==19 && annee==0) bissextile=0; if(annee<0 || annee>99) calcul=0; else if(mois<1 || mois>12) calcul=0; else if(jour<1 || jour>31) calcul=0; else if(jour>30 && (mois==4 || mois==6 || mois==9 ||mois==11)) calcul=0; else if(jour>28 && mois==2 && bissextile==0) calcul=0; else if(jour>29 && mois==2 && bissextile==1) calcul=0; if(calcul){ if(mois==5) ind_mois=tab_mois[ind_annee][0]; else if(mois==8 ||(mois==2 && bissextile==1)) ind_mois=tab_mois[ind_annee][1]; else if(mois==3 || mois==11 ||(mois==2 && bissextile==0)) ind_mois=tab_mois[ind_annee][2]; else if(mois==6) ind_mois=tab_mois[ind_annee][3]; else if(mois==9 || mois==12) ind_mois=tab_mois[ind_annee][4]; else if(mois==4 || mois==7 ||(mois==1 && bissextile==1)) ind_mois=tab_mois[ind_annee][5]; else if(mois==10 ||(mois==1 && bissextile==0)) ind_mois=tab_mois[ind_annee][6]; ind_jour=jour%7-1; if(ind_jour==-1) ind_jour=6; journee=tab_jour[ind_mois][ind_jour]; str=jour_semaine[journee-1]; if(annee>=0 && annee<=9) str_plus="0"; printf("Le %d/%d/%d%s%d est un %s", jour, mois, siecle, str_plus, annee, str); } else printf("La date demandée est incorrecte"); }