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

  FORUM HardWare.fr
  Programmation
  Divers

  [Caml]Tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Caml]Tableau

n°1371604
pitch87
Posté le 21-05-2006 à 16:26:53  profilanswer
 

Salut
 
J'ai un petit problème sur mon programme en Caml.
Je n'arrive pas à créer de tableaux de longueur paramétrable.
Exemple :
let a = (Array.create 12 (Array.create 12 2));;
a.(5).(5) <- 0;;
 
a;;
- : int array array =
[|[|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|]|]
 
Voila mon problème, toute la cinquième colonne est rempli de 0 alors que je voudrai juste la cinquième case de la cinquième colonne.
Si quelqu'un avait une solution.
 
Merci

mood
Publicité
Posté le 21-05-2006 à 16:26:53  profilanswer
 

n°1462593
pwang
Posté le 22-10-2006 à 20:29:18  profilanswer
 

Wouah... c'est un post sans réponse qui date d'il y a longtemps...
 
Je vais y répondre quand même :
 
Tu as créé un tableau de tableaux, ce qui est courant...
 
Cependant, le tableau "dedans" (celui qui représente les "lignes" ) n'est créé qu'une seule fois !
 
Donc quand tu fais l'effet de bord (l'affectation), tu modifies une seule case d'un seul tableau, mais qui est pointé par chaque ligne...
 
Bon, alors en pratique, ça donne :
 
 
let a = Array.create_matrix 12 12 2;;
a.(5).(5) <- 0;;  
a;;  
 
[|[|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|]|]
 
Ou bien :
 
let a = Array.map (fun _ -> Array.create 12 2) (Array.create 12 [||]) ;;
a.(5).(5) <- 0;;  
a;;
 
[|[|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 0; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|];
  [|2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2; 2|]|]
 
 
 
Ca aurait eu exactement le même comportement en C ou dans un autre langage impératif (j'exclus les langages sans effet de bords, comme Haskell parce que je ne sais pas comment on fait dans ces cas-là)


Message édité par pwang le 22-10-2006 à 20:29:52

---------------
étudiant en master de recherche en informatique - algorithmique et programmation - langages : ocaml, etc.

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

  [Caml]Tableau

 

Sujets relatifs
tableau défini par [][x] ... [résolu]Allocation dynamique d'un tableau
Probleme de session et tableauCSS pour configurer l'impression d'un tableau...
Mise à jour du contenu d'un tableau JTablePointeur et tableau
trier un tableauafficher tableau dynamique dans un état Access
afficher un tableau dynamique dans un étatcomment faire un div de hauteur égale à une cellule d'un tableau?
Plus de sujets relatifs à : [Caml]Tableau


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