Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
645 connectés 

  FORUM HardWare.fr
  Programmation
  Langages fonctionnels

  [Caml] Listes et changements

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Caml] Listes et changements

n°2160497
rideronix
Posté le 17-10-2012 à 18:02:47  profilanswer
 

Bonjour a tous,
 
J'ai quelques soucis concernant un exercice de caml.
 
J'ai une liste de ce genre  
 

Code :
  1. let l = [("Hugo", 42.);("Moro",89.);("Zoro",1.)


 
Et je dois ecrire une fonction du type:
 

Code :
  1. string- > string -> (string *'a) list -> (string * 'a) list = <fun>


 
Qui servirait a remplacer le nom d'une personne dans la liste par un autre nom et que ce changement soit classe par ordre alphabétique.
 
J'ai le droit d'utiliser la fonction :

Code :
  1. String.lowercase


 
J'ai fini mon code mais rien ne change dans la liste:
 
 

Code :
  1. let rec change_name ancien_nom nouveau_nom l =
  2. let ancien_nom = String.lowercase ancien_nom and nouveau_nom = String.lowercase nouveau_nom in
  3. match l with
  4.    |[]-> []
  5.     |(m,w)::l when m = ancien_nom -> (nouveau_nom,w)::l
  6.     |(m,w)::l when m > ancien_nom -> (m,w)::l
  7.     |(m,w)::l when m < ancien_nom -> (m,w)::(name ancien_nom nouveau_nom l);;


 
Merci d'avance..


Message édité par rideronix le 17-10-2012 à 19:35:51
mood
Publicité
Posté le 17-10-2012 à 18:02:47  profilanswer
 

n°2160514
mrbebert
Posté le 17-10-2012 à 20:48:43  profilanswer
 

Rhâââ du Caml [:sir_knumskull]  
 
La dernière ligne, j'imagine que c'est plutôt :

Code :
  1. |(m,w)::l when m < ancien_nom -> (m,w)::(change_name ancien_nom nouveau_nom l);;


Ca devrait effectivement changer la valeur du nom mais pour retrier, par contre ... [:gratgrat]  
On part du principe que la liste initiale est elle même triée ?


Message édité par mrbebert le 17-10-2012 à 20:49:01

---------------
Doucement le matin, pas trop vite le soir.
n°2160525
rideronix
Posté le 17-10-2012 à 21:33:59  profilanswer
 

J'ai auparavant code la fonction delete (donc pour supprimer)

Code :
  1. let rec delete n l =
  2.   match l with
  3.     | [] -> []
  4.     | (a,b)::l ->
  5.       let x = compare n a in
  6.         if x = 1 then (a,b)::delete n l
  7. else if x = -1 then l
  8. else l ;;

n°2160527
mrbebert
Posté le 17-10-2012 à 21:51:21  profilanswer
 

Ah ben voila : tu supprimes l'ancien nom et insère le nouveau :D  
 
Sinon, je ne vois pas comment s'en servir [:figti]


---------------
Doucement le matin, pas trop vite le soir.
n°2160717
rideronix
Posté le 19-10-2012 à 01:35:04  profilanswer
 

Done. Merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Langages fonctionnels

  [Caml] Listes et changements

 

Sujets relatifs
Des listes en C..scilab soustraction entre deux listes
listes déroulantes liées sur access 20103 listes déroulantes
Comparer 2 listes dans 2 onglets via macro VBA (Excel 2007)listes déroulantes inoperantes apres copie
2 listes déroulantesListes imbriqués
Problème avec des listes à puces décalées. 
Plus de sujets relatifs à : [Caml] Listes et changements


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR