Aidez moi sur Caml

joe24 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'ai la structure suivante sur caml:
# type nom=string and prenom=string and note=float and mayenne=float;;
# type etudiant=(nom*prenom)*(note list);;
# type resultat=etudiant list;;
1°:la fonction moyenne,son profil est:note ist->float

(* La fonction d'addition de 2 reels*)
# let add x y = x +. y;;

(*La some des elements d'une liste*)
# let rec list_sum l = match l with
[]->0.
| x:: xs ->add x (list_sum xs);;

(*La longueur d'une liste*)
# let rec lenght l =match l with
[]->0.
| x::reste ->1.+.lenght reste;;

(*La moyenne des elements d'une liste*)
# let moyenne l=list_sum l /. lenght l;;

(*La moyenne d'un etudiant*)celle ci ne marche pas.
# let etudiant_moyenne l=match l with
(("",""),[])->0.
| (("",""),m)->moyenne m;;

(*Liste des moyenes des etudiants*) son profil resultat->((nom*prenom)*moyenne)list
#let etudiant_moy l=match l with
[]->0.
| [("",""),[]]->0.
| x::reste->[etudiant_moyenne x;etudiant_moy reste];; elle ne marche pas aussi

(*Liste des etudiants admis*)son profil:((nom*prenom)moyene)list>(nom*prenom)list
#let etudiants_admis l=match l with
[]->("","")
|[("",""),m] when moyenne m>=10. ->("","");;elle ne marche as aussi
(*Liste des etudiants ajournés*)

Aidez moi a rectifier les erreurs SVP.

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Malheureusement mes connaissances en Caml se limitent à Caml Light...
Cependant avec Caml Light je peux faire ces quelques fonctions qui devraient convenir :

(* etudiant_moyenne : ('a * 'b) * float list -> float = <fun> *)
let etudiant_moyenne e=
let ((n,p),l)=e in moyenne l;;

(* etudiant_moy : (('a * 'b) * float list) list -> float list = <fun> *)
let rec etudiant_moy l=
match l with
[]->[]
|e::reste->(etudiant_moyenne e)::(etudiant_moy reste);;

(* etudiants_admis : (('a * 'b) * float list) list -> ('a * 'b) list = <fun> *)
let rec etudiants_admis l=match l with
e::reste when (etudiant_moyenne e)>=10. -> let ((n,p),note)=e in (n,p)::(etudiants_admis reste)
|_->[];;

Je ne les ai pas vérifiées mais elles compilent, il faudra peut-être faire quelques arrangements pour passer à OCaml....
0