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

  FORUM HardWare.fr
  Programmation
  Divers

  [Caml] pb avec des matrix en caml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Caml] pb avec des matrix en caml

n°1041183
liouan
Posté le 09-04-2005 à 13:55:26  profilanswer
 

Bonjour j'ai un petit problème avec des tableaux en Caml:
voici mon code
 
let t = make_matrix 2 2 (make_matrix 2 2 0);;
t.(0).(0).(0).(0)<-1;;
t;;
 
Voilà j'ai créé un tableau à 4 dimensions et j'ai essayé de modifier un emplacement du tableau
mais voici la réponse du terminal:
 
t : int vect vect vect vect =
 [|[|[|[|0; 0|]; [|0; 0|]|]; [|[|0; 0|]; [|0; 0|]|]|];
   [|[|[|0; 0|]; [|0; 0|]|]; [|[|0; 0|]; [|0; 0|]|]|]|]
#- : unit = ()
#- : int vect vect vect vect =
 [|[|[|[|1; 0|]; [|0; 0|]|]; [|[|1; 0|]; [|0; 0|]|]|];
   [|[|[|1; 0|]; [|0; 0|]|]; [|[|1; 0|]; [|0; 0|]|]|]|]
 
il a modifié 4 éléments au lieu d'un.
J'ai essayé de remédier à ce problème avec des vects et des copy_vect mais rien n'y fait.
si quelqu'un sait d'où ça vient et peut me proposer un code qui fonctionne...

mood
Publicité
Posté le 09-04-2005 à 13:55:26  profilanswer
 

n°1041204
verdoux
And I'm still waiting
Posté le 09-04-2005 à 14:22:04  profilanswer
 

C'est normal

Citation :


val make_matrix : int -> int -> 'a -> 'a array array
 
Array.make_matrix dimx dimy e returns a two-dimensional array (an array of arrays) with first dimension dimx and second dimension dimy. All the elements of this new matrix are initially physically equal to e. The element (x,y) of a matrix m is accessed with the notation m.(x).(y).

n°1041206
pascal_
Posté le 09-04-2005 à 14:24:22  profilanswer
 

C'est passé récement sur fr.comp.lang.caml
 
http://groups.google.fr/groups?hl= [...] &frame=off
 

n°1041744
liouan
Posté le 10-04-2005 à 10:51:42  profilanswer
 

oui dans ce post il y a l'xeplication du problème mais pas la résolution.
Ils disent que tous les sous-tableaux pointent vers la meme zone. En conséquence, si on en modifie un on les modifie tous.
J'ai déjà essayé de remédier à ce problème avec des boucles et tout ce qu'on veut mais ça ne marche pas.
c'est lourd et je ne peux pas passer sur ocaml.
Quelqu'un aurait un code qui fonctionne svp?

n°1041774
pascal_
Posté le 10-04-2005 à 11:45:10  profilanswer
 

Code :
  1. let ma_matrix =
  2. let t = Array.create_matrix 2 2 ( [| [| |] |] ) in
  3. for i=0 to 1 do
  4.  for j=0 to 1 do
  5.   t.(i).(j) <- (Array.create_matrix 2 2 0)
  6.  done
  7. done;
  8. t
  9. ;;


 
C'est du Ocaml, vire les "Array.", normalement ça doit marcher (c'est peut-être pas ce qu'il y a de plus élégant, notamment le [| [| |] |]   [:joce] )

n°1041787
liouan
Posté le 10-04-2005 à 12:02:14  profilanswer
 

nan dsl caml light ne connait pas create matrix
j'avais trouvé une manière de faire:
 
let t = make_matrix 2 2 (copy_vect(make_matrix 2 2 0));;
t.(0).(0)<-[| [|1;1|];[|1;1|]|];;
t;;
 
mais ça m'oblige à fixer la taille du tableau "manuellement" alors que je veux qu'elle dépende d'un paramètre que je place au début du prog genre:
 
let taille=2;;
let t = make_matrix taille taille (copy_vect(make_matrix taille taille 0));;
t.(0).(0)<-[| [|1;1|];[|1;1|]|];;
t;;

n°1041799
pascal_
Posté le 10-04-2005 à 12:12:06  profilanswer
 

Code :
  1. let taille = 2;;
  2. let ma_matrix =
  3. let t = Array.create_matrix taille taille ( [| |] ) in
  4. for i=0 to taille-1 do
  5.  for j=0 to taille-1 do
  6.   t.(i).(j) <- (Array.create_matrix taille taille 0)
  7.  done
  8. done;
  9. t
  10. ;;


 
Et tu remplaces "Array.create_matrix" par  make_matrix...


Message édité par pascal_ le 10-04-2005 à 12:12:50
n°1042346
liouan
Posté le 10-04-2005 à 21:05:07  profilanswer
 

je comprends pas pourquoi mais ça marche super bien :pt1cable:  
 :sol: merci  :sol:


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

  [Caml] pb avec des matrix en caml

 

Sujets relatifs
OpenGL Matrix SkinningCaml :: forcer le programme à attendre l'appui sur une touche
Caml :: inclure un commentaireErreur CaML débutant.
[caml] Peut-on déclarer une variable polymorphe [...] ?pb client avec socket tcp en caml
A quand un topic Lisp/Scheme/Caml ?pb sur un petit exo en Caml
[Caml] Probleme resolution fonctionFramwork 1.1 & Web matrix
Plus de sujets relatifs à : [Caml] pb avec des matrix en caml


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)