home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH05_15.C Combien y a t'il de jours entre *
- * cette date et le 1er janvier? *
- * domaine des annΘes= [ 1901, 2099] *
- *********************************************************************/
-
- #include<stdio.h>
- int LitInt( void);
-
- main( void)
- {
- int jour, mois, annee, nbjour;
-
- /* 1. Saisie contr⌠lΘe des paramΦtres: */
-
- do{
- do{
- printf("\t\t\t\t jour : ");
- jour= LitInt();
- }
- while( jour<=0 || jour>31);
-
- do{
- printf("\t\t\t\t mois : ");
- mois= LitInt();
- }
- while( mois<=0 || mois>12);
-
- printf("\t\t\t\t annΘe: ");
- annee= LitInt();
- }
- while( mois== 2 && ( ( annee % 4 == 0 && jour> 29)
- || ( annee % 4 != 0 && jour> 28)
- )
- || ( jour> 30
- && ( mois== 4 || mois== 6 || mois== 9 || mois== 11)
- )
- || ( annee< 1901) || ( annee> 2099)
- );
-
- /* 2. Calcul: */
-
- switch( mois )
- {
- case 1: nbjour= 0; break;
- case 2: nbjour= 31; break;
- case 3: nbjour= 31+ 28; break;
- case 4: nbjour= 90; break;
- case 5: nbjour= 120; break;
- case 6: nbjour= 151; break;
- case 7: nbjour= 181; break;
- case 8: nbjour= 212; break;
- case 9: nbjour= 243; break;
- case 10: nbjour= 273; break;
- case 11: nbjour= 304; break;
- case 12: nbjour= 334; break;
- }
-
- nbjour+= jour;
-
- /* prise en compte des annΘes bissextiles */
- if( annee % 4 == 0
- && mois!= 2 && jour!= 29
- && nbjour>= 31+29
- )
- nbjour++;
-
- printf(" Le %d/%d/%d est le %dΦme jour de l'annΘe.",
- jour, mois, annee, nbjour);
- }
-
- int LitInt( void)
- {
- int Entier;
- while( scanf("%d", &Entier)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- return ( Entier);
- }
-