Exercice 52
Énoncé
Soient les deux modèles de structure date et personne déclarés ainsi :
cont int LG_NOM = 30 ;
struct date
{ int jour ;
int mois ;
int annee ;
} ;
struct personne
{ char nom [LG_NOM+1] ; // chaîne de caractères (de style C)
// représentant le nom
struct date date_embauche ;
struct date date_poste ;
} ;
Écrire une fonction qui reçoit en argument une structure de type personne et qui en
remplit les différents champs avec un dialogue se présentant sous l’une des 2 formes
suivantes :
nom : DUPONT
date embauche (jj mm aa) : 16 1 75
date poste = date embauche ? (O/N) : O
nom : DUPONT
date embauche (jj mm aa) : 10 3 81
date poste = date embauche ? (O/N) : N
date poste (jj mm aa) : 23 8 91
Notre fonction doit modifier le contenu d’une structure de type personne ; il est donc
nécessaire qu’elle en reçoive la référence ou l’adresse en argument. Ici, l’énoncé
n’imposant rien de particulier, nous choisirons une transmission par référence. Voici ce
que pourrait être la fonction demandée :
void remplit (personne & p)
{ char rep ; // pour lire une réponse de type O/N
cout << "nom : " ;
cin >> p.nom ; // attention, pas de contrôle de longueur
cout << "date embauche (jj mm aa) : " ;
cin >> p.date_embauche.jour
>> p.date_embauche.mois
>> p.date_embauche.annee ;
cout << "date poste = date embauche ? (O/N) : " ;
cin >> rep ;
if (rep == 'O') p.date_poste = p.date_embauche ;
else { cout << "date poste (jj mm aa) : " ;
cin >> p.date_poste.jour
>> p.date_poste.mois
109
Précédent

- 110/398

Suivant