Perl - Tableau associatif Hash

Perl - Tableau associatif Hash - Perl - Programmation

Marsh Posté le 09-03-2010 à 11:06:16    

Bonjour,
 
Je voudrais remplir une table de hachage qui a plusieurs dimensions.
Je ne sais pas trop comment procéder.
 
Mes données sont les suivantes:
Point1 x1 y1 z1
Point2 x2 y2 z2
...
Pointn xn yn zn
 
Voici le contenu de mes listes
 @x x1 x2 ... xn
 @y y1 y2 ... yn
 @z z1 z2 ... zn
 
Comment construire une table de hachage qui me permettra d'associer le Pointn avec les  coordonnées x, y, z.
Par exemple, si ma table de hachage s'appele %Hash_Point
 
Si je fais $Hash_Point('Point1'), je veux avoir x1 y1 z1
 
Merci


Message édité par phdenis le 09-03-2010 à 18:59:24
Reply

Marsh Posté le 09-03-2010 à 11:06:16   

Reply

Marsh Posté le 09-03-2010 à 18:58:36    

Désolé, j'ai oublié de préciser qu'il s'agissait de script écrit en langage Perl.


Message édité par phdenis le 09-03-2010 à 18:58:53
Reply

Marsh Posté le 09-03-2010 à 19:31:50    

C'est pour l'école ?


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 09-03-2010 à 20:30:18    

Ce sujet a été déplacé de la catégorie OS Alternatifs vers la categorie Programmation par Black_lord


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 10-03-2010 à 01:10:58    

Non, il ne s'agit pas d'un sujet pour l'école.
Je ne suis plus étudiant, j'ai commencé à apprendre Perl récemment et je me demande comment faire cela.  
 
Vu que je suis entrain d'essayer de rédiger un script, mais je butte sur cette difficulté.

Reply

Marsh Posté le 10-03-2010 à 10:59:37    

Grosso modo, tu veux ceci:
$Hash_Point{ 'Point1' } = ['x1', 'y1', 'z1'];
A la clé 'Point1' du hash on associe une référence sur un array anonyme.
Tu peux ensuite accéder à cette array comme @{$Hash_Point{'Point1'}} et donc a ses composants comme @{$Hash_Point{'Point1'}}[0], @{$Hash_Point{'Point1'}}[1]... ou aussi comme $Hash_Point{'Point1'}->[0], $Hash_Point{'Point1'}->[1]...
A+,


Message édité par gilou le 10-03-2010 à 11:28:21

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 10-03-2010 à 22:38:57    

Slt,
 
Si je comprends bien, il faut que je prenne element par element des mes listes @x,@z,@y et que je fasse une association entre le Point1 et les listes.
 
Je vais essayer cela et je te tiens au courant.
Merci pour ta réponse.

Reply

Marsh Posté le 11-03-2010 à 12:58:54    

Si tu expliquais sous quelle forme sont tes données en entrée (fichier texte avec les valeurs séparées par des blancs?) ça aiderait à répondre

 
Citation :

Voici le contenu de mes listes

C'est quoi ces listes? vu que apparemment tes données sont sous la forme Point1 x1 y1 z1.

 

A+,


Message édité par gilou le 11-03-2010 à 13:08:51

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-03-2010 à 21:53:00    

Bonsoir,
 
Mes données sont dans un fichier texte sous la forme suivante:
Pt: Pt1 Pt2 Pt3
X: x1 x2 x3
Y: y1 y2 y3
Z: z1 z2 z3
 
Je viens via mon script parcourir mon fichier texte et je récupère chaque information dans des listes @Pt, @x, @y, @z
 
Donc à la fin, je me retrouve avec 4 listes:  
Une liste contenant les Pts1 et 3 listes contenant des coordonnées x,y,z.
 
Merci pour ta réponse.

Reply

Marsh Posté le 12-03-2010 à 10:52:22    

Citation :

Je viens via mon script parcourir mon fichier texte et je récupère chaque information dans des listes @Pt, @x, @y, @z


Si tu as ces 4 arrays, le plus simple pour remplir ton hash est de faire comme suit:

Code :
  1. my %Hash_Point;
  2. my $nb_data = scalar @Pt;
  3. for (my $i=0; $i<$nb_data; $i++) {
  4.    $Hash_Point{ $Pt[$i] } = [$x[$i], $y[$i], $z[$i]];
  5. }


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-03-2010 à 10:52:22   

Reply

Marsh Posté le 23-03-2010 à 23:43:17    

Merci ta réponse a résolu mon prblm

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed