home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH11_03.C Passage de structure par valeur α une fonction *
- * Initialisation avec des fonctions spΘcialisΘes *
- *********************************************************************/
-
- #include<stdio.h>
-
- struct date {
- int jour;
- int mois;
- int annee;
- };
-
- void LitInt( int*);
- struct date LitDate( struct date);
- void EcritDate( struct date);
-
- main( void)
- {
- struct date d;
-
- d= LitDate( d);
- EcritDate( d);
- }
-
- struct date LitDate( struct date d0)
- {
- printf("\n Entrez la date:\n");
-
- do{
- do{
- printf("\t\t\t\t jour : ");
- LitInt( &d0.jour);
- }
- while( d0.jour<=0 || d0.jour>31);
-
- do{
- printf("\t\t\t\t mois : ");
- LitInt( &d0.mois);
- }
- while( d0.mois<=0 || d0.mois>12);
-
- printf("\t\t\t\t annΘe: ");
- LitInt( &d0.annee);
- }
- while( ( d0.mois== 2
- && ( ( d0.annee % 4== 0
- && d0.jour> 29
- )
- || ( d0.annee % 4 != 0
- && d0.jour> 28
- )
- )
- )
- || ( d0.jour> 30
- && ( d0.mois== 4 || d0.mois== 6
- || d0.mois== 9 || d0.mois== 11
- )
- )
- || ( d0.annee< 1901) || ( d0.annee> 2099)
- );
- return( d0);
- }
-
- void EcrittDate( struct date d1)
- {
- printf("\n La date est le: %d/%d/%d",
- d1.jour, d1.mois, d1.annee);
- }
-
- void LitInt( int *entier)
- {
- double dble;
- do
- {
- while( scanf("%lf", &dble)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- }
- while( dble< -32768.0 || dble> 32767.0);
- *entier= (int) dble;
- }
-
- /*
- Entrez la date:
- jour : 1
- mois : 11
- annΘe: 1965
- La date est le: 1/11/1965 */