Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type mois_t = Janvier|Fevrier|Mars|Avril|Mai|Juin|Juillet|Aout|Septembre|Octobre|Novembre|Decembre;;
- type date_t = {jour:int; mois:mois_t; annee:int};;
- let correct_date d = let correct_mois d =
- match d.mois with
- | Avril| Juin| Septembre| Novembre -> d.jour <= 30
- | Fevrier when d.annee mod 4 = 0 -> d.jour <= 29
- | Fevrier -> d.jour <= 28
- | _ -> d.jour <= 31
- in d.annee >= 1900 && d.annee <= 2008 && d.jour >= 1 && correct_mois d;;
- type enregistrement = {nom:string; prenom:string; date:date_t}
- let rec ajout_pers bdd pers =
- match bdd with
- | [] -> [pers]
- | a::r -> if (a.nom > pers.nom || a.nom = pers.nom && a.prenom = pers.prenom) then pers::a::r else a::ajout_pers r pers;;
- let rec suppr_pers bdd pers =
- match bdd with
- | [] -> []
- | a::r -> if (a.nom = pers.nom && a.prenom = pers.prenom && a.date = pers.date) then suppr_pers r pers else a::suppr_pers r pers;;
- let rec search_pers bdd nom =
- match bdd with
- | [] -> failwith "Cette personne n'existe pas"
- | a::r -> if (a.nom = nom) then a else search_pers r nom;;
- (* General *)
- let rec nais_at bdd jour mois =
- match bdd with
- |[] -> []
- | a::r -> if (a.date.jour = jour && a.date.mois = mois) then a::nais_at r jour mois else nais_at r jour mois;;
- (* Correction *)
- let rec douze_mars bdd =
- match bdd with
- | [] -> []
- | a::r when a.date.jour = 12 && a.date.mois = Mars -> a::douze_mars r
- | a::r -> douze_mars r;;
- (* General *)
- let rec start_by bdd letter =
- match bdd with
- | [] -> []
- | a::r -> if (Char.uppercase (String.get a.nom 0) = Char.uppercase letter) then a::start_by r letter else start_by r letter;;
- (* Correction *)
- let rec nomD bdd =
- match bdd with
- | [] -> []
- | a::r when a.nom < "D" -> nomD r
- | a::r when a.nom < "E" -> a::(nomD r)
- | a::r -> [];;
- let req select query bdd =
- match bdd with
- | [] -> []
- | a::r when (query a) -> a::select query r
- | a::r -> select query r;;
Add Comment
Please, Sign In to add comment