pb avec des matrix en caml [Caml] - Divers - Programmation
Marsh Posté le 09-04-2005 à 14:22:04
C'est normal
Citation : |
Marsh Posté le 09-04-2005 à 14:24:22
C'est passé récement sur fr.comp.lang.caml
http://groups.google.fr/groups?hl= [...] &frame=off
Marsh Posté le 10-04-2005 à 10:51:42
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?
Marsh Posté le 10-04-2005 à 11:45:10
Code :
|
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 [| [| |] |] )
Marsh Posté le 10-04-2005 à 12:02:14
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;;
Marsh Posté le 10-04-2005 à 12:12:06
Code :
|
Et tu remplaces "Array.create_matrix" par make_matrix...
Marsh Posté le 10-04-2005 à 21:05:07
je comprends pas pourquoi mais ça marche super bien
merci
Marsh Posté le 09-04-2005 à 13:55:26
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...