home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH11_04.C Passage de structure par pointeur α une fonction *
- * Initialisation avec des fonctions spΘcialisΘes *
- *********************************************************************/
-
- #include<stdio.h>
-
- struct date {
- int jour;
- int mois;
- int annee;
- };
-
- void LitInt( int*);
- void LitDate( struct date*);
- void EcritDate( struct date*);
-
- main( void)
- {
- struct date d;
-
- LitDate( &d);
- EcritDate( &d);
- }
-
- void 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)
- );
- }
-
- void EcritDate( 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 */