Université de Nice-Sophia Antipolis Octobre 2021
Polytech/Xidian Durée: 1h30
Fonctions
Travaux Dirigés – Séance n. 4
1 La date du lendemain
On désire écrire un programme qui affiche la date du lendemain. La date du jour est repré- sentée par trois entiers : jour, mois et année. Le calcul de la date du lendemain ne pourra se faire que sur une datevalidedont l’année est postérieure à 1583. La date du lendemain sera écrite sur la sortie standard avec le mois en toutes lettres. Pour écrire ce programme, vous suivrez l’algorithme ci-dessous :
{ lire le jour , le mois et l’ année } { vérifier si la date est valide }
s i non valide a l o r s { signaler l’ erreur } s i n o n
{ calculer la date du lendemain et } { afficher la date du lendemain } f i n s i
Remarques :
— la date aura le formatjj/mm/aaaa(e.g. 13/10/2019) ;
— il faudra tenir compte des années bissextiles.
2 Structuration du programme « date du lendemain »
Nous allons structurer le programme de la date du lendemain et le construire progressivement à l’aide de fonctions. Vous allez voir comment les fonctions vous permettront de structurer de façon cohérente votre programme.
exercice 1)Écrivez la fonctionecrireDatequi prend 3 paramètres, jour, mois, et année et qui écrit sur la sortie standard la date avec le mois en toutes lettres. Cette fonction possède l’en-tête suivant :
/* Antécédent : j, m, a représentent une date valide Conséquent : la date est écrite sur la sortie standard
avec le mois en toutes lettres
*/void ecrireDate (c o n s t i n t j, c o n s t i n t m, c o n s t i n t a)
1
exercice 2)Écrivez la fonctionmainqui lit sur l’entrée standard trois entiers : jour, mois et année et qui écrit sur la sortie standard la date à l’aide de la fonction précédenteecrireDate. exercice 3)Testez votre programme.
exercice 4)Écrivez maintenant la fonctionbissextilequi teste si une année passée en para- mètre est bissextile ou non. L’en-tête de la fonction est le suivant :
/* Antécédent : a > AnneeMin */
/* Conséquent : bissextile = vrai si l’année est bissextile , et
* faux sinon
*/
i n t bissextile (c o n s t i n t a)
exercice 5)Écrivez la fonctionjoursDansMoisqui renvoie le nombre de jours d’un mois d’une année donnée. Le mois et l’année sont passés en paramètre à la fonction. Vous utiliserez bissextiledans cette fonction. Son en-tête est le suivant :
/* Antécédent : m et a, deux entiers qui représentent un mois et une année valides
Conséquent : renvoie le nombre de jours dans le mois (>28 et 631)
*/i n t joursDansMois (c o n s t i n t m, c o n s t i n t a)
exercice 6)Écrivez la fonctiondateValidequi teste si une date représentée par 3 entiers (j, m, a) passés en paramètre est valide ou non. Vous utiliserez la fonction précédentejoursDansMois pour écrire la fonctiondateValide. Son en-tête est le suivant :
/* Antécédent : j, m et a, trois entiers quelconques
* Conséquent : renvoie vrai si (j, m, a) représente date valide
* du calendrier Grégorien
i n t*/ dateValide (c o n s t i n t j, c o n s t i n t m, c o n s t i n t a)
exercice 7)Enfin, en utilisant les fonctions précédentes, écrivez et exécutez le programme du calcul de la date du lendemain selon l’algorithme donné du début du sujet.
2