Foros del Web » Programación para mayores de 30 ;) » Programación General »

array de arrays...Se puede???

Estas en el tema de array de arrays...Se puede??? en el foro de Programación General en Foros del Web. hola, estoy haciendo un script y necesito hacer un array de arrays, lo que en lenguaje C se llama vercor de vectores, como para hacer ...
  #1 (permalink)  
Antiguo 08/08/2003, 06:23
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
array de arrays...Se puede???

hola, estoy haciendo un script y necesito hacer un array de arrays, lo que en lenguaje C se llama vercor de vectores, como para hacer una estructura de datos, y así tener columnas y filas en una variable y llamar por ejemplo a la columna 3 de la fila 5.

Si saben como hacerlo se los agradececría ya que probé de todas las formas que se me ocurrían pero no pude y si sigo así voy a que medio o o o y luego ...jeje!!!

Gracias
MonoSwim
  #2 (permalink)  
Antiguo 08/08/2003, 16:46
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola mi amigo,

Creo que te hizo falta mencionar un detalle, ¿en qué lenguaje de programación estás trabajando?
  #3 (permalink)  
Antiguo 09/08/2003, 10:47
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
perdón...en PERL

pequeño detalle ¿no?? la ley de murphy otra vez presente... jeje!!!

MonoSwim
  #4 (permalink)  
Antiguo 09/08/2003, 11:18
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Claro que si se puede hacer un array de arrays, pero en realidad sería un array de referencias de arrays, deja te pongo un código para que veas como funciona:


Código:
#!/usr/bin/perl -w

use strict;


#EJEMPLO DE ARRAY DE REFERENCIAS

#:: iniciamos un array con colores
    my @colores = ('rojo', 'verde', 'cafe', 'morado');

#:: iniciamos un array con dias de la semana
    my @semana = ('Lunes', 'Martes', 'Miércoles', 'Jueves');

#:: hacemos nuestro array con las referencias
    my @array_de_arrays = (\@colores, \@semana);



#AHORA PARA DESPLEGAR UN ELEMENTO HACEMOS ESTO

   print "$array_de_arrays[0][0]\n"; #Despliega el color rojo
   print "$array_de_arrays[0][3]\n"; #Despliega el color morado

   print "$array_de_arrays[1][0]\n"; #Despliega el día Lunes
   print "$array_de_arrays[1][2]\n"; #Despliega el día Miércoles


exit(1); #finalizamos exitosamente
SALUDOS
  #5 (permalink)  
Antiguo 09/08/2003, 12:28
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola monoswim,

Como ya lo mencionó nuestro amigo kidd, la solución en Perl está en usar referencias. Resulta que en Perl no existen las matrices multidimensionales como tal, al menos como las conocemos en C, de modo que el mecanismo para implementar este tipo de datos (en un modo muy típico de Perl) es mediante un truco que, como efecto colateral, permite usar la sintaxis que mencionas, es decir: $mi_variable[$indice1][$indice2].

En realidad, aunque suene un poco `sucio' el hecho de llamarlo truco, este es uno de esos detalles que hace el lenguaje tan bonito y rico. De hecho, gracias a que las matrices multidimensionales en Perl son en efecto referencias, no existe la limitación (existente en C por ejemplo) inherente de que cada matriz de más de una dimensión debe tener un número fijo de filas, columnas y demás (en el caso de matrices de más de dos dimensiones). Es decir, puedes tener una matriz de dos dimensiones por ejemplo, en la que cada fila puede tener un número de columnas diferente, y todo esto mediante construcciones nativas del lenguaje. En C habría que crear nuestros propios tipos de datos y habría que encargarse manualmente de la manipulación de memoria.

Bueno, en fin, como complemento al programa que ya nos compartió kidd, aquí te presento otro programa que usa referencias anónimas (denotadas por corchetes cuadrados en Perl) para definir una matriz bidimensional:

Código:
#! /usr/bin/perl -w
use strict;

use vars qw(@matriz);

@matriz = ([1, 2, 3], ['a', 'b', 'c'], ['hola', 'mi', 'gente']);

foreach my $i (0 .. 2) {
    foreach my $j (0 ..2) {
        print $matriz[$i][$j] . " ";
    }
    print "\n";
}
Este programa, como puede esperarse, produce como salida:

Código:
1 2 3
a b c
hola mi gente
Puedes leer más sobre el asunto de las referencias en la documentación de Perl.

$ perldoc perlref

http://perldoc.com/perl5.8.0/pod/perlref.html

Finalmente, quisiera remarcar un detalle sobre el código que compartió gentilmente kidd: un valor de `1' como argumento de la función exit() generalmente quiere decir que el programa debe finalizar a causa de un error, y en efecto muchos sistemas operativos y aplicaciones interpretan de ese modo cualquier valor diferente a cero, el cual es reconocido universalmente como valor de éxito. Probablemente fue el cero el número que quiso escribir nuestro amigo.

Un cordial saludo.
  #6 (permalink)  
Antiguo 11/08/2003, 06:47
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Muy Bueno...

Vendría a ser como el & en el lenguaje C, pasando los valores por referencia...La verdad es que Perl cada ves me gusta más, tiene muy pocas limitaciones, hasta ahora pude hacer todo lo que me propuse, hasta ahora la única limitación es mi nivel de conocimientos sobre el lenguaje, pero de a poco voy aprendiendo.

Gracias Kidd y Leonardop por sus respuestas, ha y por cierto, muy buena la página de perldoc...me al estoy leyendo toda...

MonoSwim
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:59.