Exercice
Dans un exercice précédent, nous avons défini une séquence saisissant et contrôlant une date qui emploie une instruction switch
commentée pour rendre le code plus explicite.
switch(mois){
case 4: /* avril */
case 6: /* juin */
case 9: /* septembre */
case 11: maxJour=30; break; /* novembre */
case 2: /* fevrier */
if ((0==annee%4 && 0!=annee%100)||0==annee%400)
maxJour=29;
else
maxJour=28;
break;
default: maxJour=31;break; /* les autres mois */
}
switch(mois){ case 4: /* avril */ case 6: /* juin */ case 9: /* septembre */ case 11: maxJour=30; break; /* novembre */ case 2: /* fevrier */ if ((0==annee%4 && 0!=annee%100)||0==annee%400) maxJour=29; else maxJour=28; break; default: maxJour=31;break; /* les autres mois */ }
Ce code est lisible grâce aux commentaires introduits par le programmeur. Pour rendre le code lisible tout en réduisant les commentaires, nous utiliserons un type énuméré : « enum { janvier, fevrier, mars, avril, mai, juin, juillet, aout, septembre, octobre, novembre, decembre}
».
Complétez le modèle ci-dessous, en respectant les consignes suivantes :
S'assurer que les constantes du type correspondent bien aux numéros usuels des mois (1 pour janvier, 2 pour février, etc.). Vous le ferez le plus simplement possible,
Un trou peut être éventuellement vide,
On respectera la structure générale présente dans le code ci-dessus,
Les cas regroupés dans le
switch
seront définis selon un ordre croissant,Si une telle instruction est nécessaire, vous placerez «
break ;
» à la fin d'un cas.
Pour s'assurer que les constantes du type énuméré ont des valeurs correctes, nous tenons compte du fait que lors de la définition, une constante prend par défaut la valeur 0 si c'est la première, la valeur de la précédente incrémentée de 1 sinon et une valeur explicitement précisée.
Il est donc nécessaire de définir la valeur de la première constante (janvier) à 1. Les autres constantes se verront attribuer les bonnes valeurs par l'intermédiaire du mécanisme par défaut.
Dans le switch
, à chaque constante entière est substituée la constante énumérée équivalente.