Vous êtes sur la page 1sur 1

CHAINES DE CARACTERES

EXERCICES
Exercice 12 : Manipulation de dates

Dans cet exercice, on représente une date par une liste de trois entiers positifs qui désignent
successivement : le jour, le numéro du mois et l'année.

Par exemple la liste [26, 11, 2000] représente la date du 26 novembre 2000.

1- Écrire une fonction saisirDate() qui demande à l'utilisateur d'entrer une chaîne de caractères sous la
forme jj/mm/aaaa et qui retourne une liste qui représente la date saisie.

Par exemple, si l'utilisateur tape 31/12/2000, la fonction retournera la liste [ 31, 12, 2000 ].

On voudrait vérifier lors de la saisie que la date est valide.

On considère qu'une date est valide si les conditions suivantes sont satisfaites :

1. la chaîne est de la forme 'jj/mm/aaaa' où jj, mm et aaaa sont des entiers positifs qui représentent
respectivement le numéro du jour dans le mois, le numéro du mois et l'année;
2. le mois est représenté par un nombre dans l'intervalle 1 à 12;
3. le numéro du jour est valide s'il est positif et s'il n'excède pas le nombre maximum des jours dans le
mois mm.

Exemples :

 la chaîne 26/11/2000 représente une date valide;


 la chaîne 31/10/2000 est invalide car on compte 30 jours seulement dans le mois d'octobre;
 la chaîne 31 10 2000 est invalide car elle n'est pas sous la forme jj/mm/aaaa;
 la chaîne 29/2/1999 est invalide le mois de février compte au maximum 28 jours dans les années
non bissextiles;
 La chaîne 29/2/2000 est valide.

Avant d'écrire cette fonction, nous allons définir quelques fonctions utiles :

2- Écrire une fonction estBissextile(a) qui renvoie 1 si l'année est bissextile et 0 sinon. L'argument a
est un nombre entier.

Rappel : la règle donnant les années bissextiles est la suivante :

 tous les 4 ans, une année est bissextile (le nombre d'années est divisible par 4);
 Exception : les années divisibles par 100 (1800, 1900, ...) ne sont pas bissextiles, sauf tous les 400
ans (le nombre d'années est divisible par 400, c'est le cas de l'année 2000 qui est donc bissextile).

3- Écrire une fonction jourDansMois(mm, a) qui renvoie le nombre de jour dans le mois numéro mm de
l'année a (mm et a sont deux nombres entiers).

4- Écrire une fonction valide(d): qui reçoit comme paramètre une date d sous forme d’une une chaîne de
caractères sous la forme 'jj/mm/aaaa' et retourne True si cette date est valide, false sinon

5- Ré-écrire la fonction saisirDate() afin de tester si la chaîne saisie par l'utilisateur est valide ou non.

La fonction redemandera à l'utilisateur de rentrer une chaîne tant que la chaîne saisie est invalide.

Vous aimerez peut-être aussi