Le calendrier
Buts
- Utilisation des tableaux,
- Utilisation des fonctions,
- Utilisation des types énumérés.
Enoncé
On se propose de gérer un petit calendrier. Etant donné un mois quelconque et une année supérieure à 1900, on aimerait afficher le calendrier correspondant sous la forme suivante (c’est une version francisée et simplifié de l’utilitaire cal de Unix).
On va coder le calendrier sous la forme d’un tableau à deux dimensions dont les lignes sont les semaines et les colonnes les noms des jours. Si une case est vide (par exemple il n’y a pas de vendredi dans la première semaine de janvier 2000), elle contiendra 0, sinon elle contiendra le numéro du jour (par exemple 2 pour le premier dimanche de janvier 2000).
Cahier des charges
- Définir en
C
les types suivants:
- Un type énuméré des 7 jours de la semaine.
- Un type énuméré des 12 mois de l’année.
- Une structure
range
permettant de représenter les intervalles, comme les jours d’un mois allant de 1 à 31.
- Un type calendrier, qui est un tableau à deux dimensions dont les lignes sont les numéros des semaines et les colonnes les jours de la semaine. Le type des éléments sera le numéro du jour.
- Écrire les fonctions suivantes:
- Écrire une fonction pour déterminer si une année donnée est bissextile. Une année est bissextile si elle est divisible par 4 mais pas par 100 ou si elle est divisible par 400. Février a alors 29 jours et l’année 366 jours. Dans toute la suite on prendra soin de gérer les années bissextiles.
- Écrire une fonction qui étant donnés une années et un mois donne le nombre de jours du mois.
- Écrire une fonction qui donne le premier jour d’une année donnée sachant que le 1 janvier 1900 était un lundi.
- Écrire une fonction qui, étant donnés un mois et une année, donne le premier jour du mois.
- Écrire une fonction qui, étant donnés un mois et une année, affiche le calendrier associé au mois (voir ci-dessus)