(* ===================================================== *)
(* Apprentissage de la programmation avec OCaml *)
(* Catherine Dubois & Valérie Ménissier-Morain *)
(* Éditions Hermès Sciences *)
(* Mars 2004 *)
(* ===================================================== *)
(* Fichier MLSRC/date_du_lendemain.ml *)
(* ===================================================== *)
let bissextile a =
(a mod 4 = 0) && ((a mod 100 <> 0) || (a mod 400 = 0));;
let nb_jours m a =
if m=4 || m=6 || m=9 || m=11 then 30
else if m=2 then (if bissextile a then 29 else 28)
else 31;;
let est_postérieure (j1, m1, a1) (j2, m2, a2) =
a1>a2 || (a1=a2 && (m1>m2 || (m1=m2 && j1>j2)));;
let date_valide (j, m, a)=
let début_grégorien=(15, 10, 1582) in
(m>=1 && m<=12) && (j>=1 && j<=(nb_jours m a))
&& est_postérieure (j, m, a) début_grégorien;;
let lendemain (jour, mois, an) =
if date_valide (jour, mois, an) then
if jour = nb_jours mois an
then if mois = 12 then (1, 1, an+1)
else (1, mois+1, an)
else (jour+1, mois, an)
else failwith "lendemain : date non valide";;
Ce document a été traduit de LATEX par
HEVEA.