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

  FORUM HardWare.fr
  Programmation
  Divers

  [OCAML] (Debutant) Construction d'une liste : Probleme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OCAML] (Debutant) Construction d'une liste : Probleme

n°1499998
teemu
Posté le 07-01-2007 à 15:56:06  profilanswer
 

Bonjour à tous !
 
J'aimerai construire une liste d'int (privée de 0) a partir de deux int (respectivement borne inférieure et borne supérieure ). Concretement quelquechose du style :  
creer_liste 5 4 -> [-5;-4;-3;-2;-1;1;2;3;4]
 
j'ai écris le code suivant :
 
let creer_liste inf sup = (*inf = borne inférieure sup = borne supérieure*)
  let liste = [] in
  for i= (-inf) to sup do
  if inf <> 0 then liste@[inf]  
  done;
;;
 
Malheuresement ce code ne compile pas ...
 
Une solution ?


Message édité par teemu le 07-01-2007 à 15:57:01
mood
Publicité
Posté le 07-01-2007 à 15:56:06  profilanswer
 

n°1500161
souk
Tourist
Posté le 08-01-2007 à 08:01:11  profilanswer
 

tu pourrais essayer de faire de l'ocaml et pas ce truc immonde ? [:dawa]
 
sinon comment ca se passe si on passe un nombre negatif  en borne inf ? en borne sup ? si une des bornes vaut 0 ?

n°1696661
Tinesoft
Just be cool and relax
Posté le 04-03-2008 à 00:00:21  profilanswer
 

Voila une solution, en utilisant la récursivité(~à une utiliser une boucle)
 
 
# let rec creer_liste inf sup= if (inf>sup) then  
                                []
                             else
                                inf::creer_liste (inf+1) sup;;    
 
   
(et voici le resultat du typage :val creer_liste : int -> int -> int list = <fun> )

explications:
----------------
-Le case de base( appelé cas trivial) est celui où la borne inf est > a la borne Sup. Dans ce cas 'ya rien a faire, on renvoit une liste vide.Ce cas est fondamental, c'est lui qui permet d'eviter que ta fonction recursive boucle a l'infini!
 
-Sinon (c'est le cas general) en utilsant la récursivité, le probleme se resume a dire çà:
<< le resultat de la  création d'une liste entre a et b, c'est   : le resulat de l 'ajout de  a en tête,  de la liste crée entre a+1 et b  >>
 
et voila :p !
 
exemple:
------------
 
# creer_liste 0 10;;
- : int list = [0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
 
 
PS: /!\ :fou:  
 
quand tu utilses la fonction avec un entier <0 , ecris celui ci entre parenthèse, sinon Ocaml  penses que tu fais une soustraction.
 
# creer_liste (-1) 1;;
- : int list = [-1; 0; 1]
 
Voila, j'espere que c'était assez claire, sinon  n'hésites pas , à me demander d'autres explications! :)      


---------------
>>>www.tineonline.tk<<<

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

  [OCAML] (Debutant) Construction d'une liste : Probleme

 

Sujets relatifs
Problème encodage cyrilliqueAide débutant
problème sortie[C#] problème d'inclusion d'une dll
générateur de nombres aléatoires sous Matlab : problèmeProblème formulaire d'upload pour les fichiers > 500 Ko
Voilà, j'ai un problème...Problème en Assembleur
[C++] Probleme : Heap corruption detectedprobleme d'execution sous IE
Plus de sujets relatifs à : [OCAML] (Debutant) Construction d'une liste : Probleme


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