1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
#include <stdio.h>
#include <stdlib.h>
int ansup (int an)
{
int an_bis, an_nbis;
an_bis = an_nbis = 0;
while (an >= 2003)
{
if ( an%4==0 && an%100!=0 || an%400==0 )
an_bis+=1;
else
an_nbis+=1;
an--;
}
return(an_bis * 366 + an_nbis * 365); /* c'est le nombre de jours entre le 01/01/2003 et le 01/01 de l'année rentrée */
}
int aninf (int an)
{
int an_bis, an_nbis;
an_bis = an_nbis = 0;
while (an < 2003)
{
if (an%4 == 0 && an%100 !=0 || an%400 == 0)
an_bis+=1;
else
an_nbis+=1;
an++;
}
return(an_bis * 366 + an_nbis * 365); /* c'est le nombre de jours entre le 01/01 de l'année rentrée et le 01/01/2003 */
}
int nb_jr (int mois, int an) /* calcul du nombre de jours passés en fonction de l'année (bissextile ou non) et du mois rentrés */
{
int bissextile[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
int n_bissextile[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int som = 0;
if ( an%4==0 && an%100!=0 || an%400==0 )
{
while (mois>0)
{
som = som + bissextile[mois-1];
mois--;
}
}
else
{
while (mois>0)
{
som = som + n_bissextile[mois-1];
mois--;
}
}
return som;
}
int main ()
{
int ans, ms, jr, jrs;
char *jouri[7] = {"mardi", "lundi", "dimanche", "samedi", "vendredi", "jeudi", "mercredi"};
char *jours[7] = {"mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche", "lundi"};
printf("rentrer une annee (entre -2000 et 4000) :");
scanf("%d",&ans);
printf("\n");
printf("rentrer un mois (entre 1 et 12) :");
scanf("%d",&ms);
printf("\n");
printf("rentrer un jour (entre 1 et 31) :");
scanf("%d",&jr);
printf("\n");
if ((ans >= -2000) && (ans <=4000) && (ms >=1) && (ms<=12) && (jr >=1) && (jr <= 31))
{
if(ans < 2003) /*si l'année saisie est inférieure à 2003*/
{
printf("\nLe (%d/%d/%d) est un %s.\n\n", jr, ms, ans, jouri[(aninf (ans) - nb_jr (ms, ans) - jr)%7]);
}
else if (ans >= 2003) /*si l'année saisie est sup ou égale à 2003*/
{
if ( ans%4==0 && ans%100!=0 || ans%400==0 )
jrs = 366 - nb_jr (ms, ans);
else
jrs = 365 - nb_jr (ms, ans); /*jrs est le nombre de jours restant de l'année rentrée*/
printf("\nLe (%d/%d/%d) est un %s.\n\n", jr, ms, ans, jours[(ansup (ans) - jrs + jr)%7]);
}
}
else
{
printf ("\n");
printf ("Erreur de saisie.\n");
printf ("Saisir obligatoirement une date dont: \n");
printf ("L'annee varie de -2000 a 4000 inclus.\n");
printf ("Le mois varie de 1 a 12 inlus.\n");
printf ("Le jour varie de 1 a 31 inclus.");
}
return 0;
} |
Partager