• Sábado 21 de Diciembre de 2024, 15:24

Autor Tema:  Re: problemas con arreglos  (Leído 4129 veces)

Alma Janeth

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: problemas con arreglos
« en: Viernes 7 de Noviembre de 2003, 02:55 »
0
hola

por que en arreglos no me almacena los datos y  tampoco los muestra cuando hago referencia a ellos ejemplo:
@array[0]=5
no me muestra nada si tengo 5,6,2 etc solo no almacena nada y por lo tanto no muestra nada

azzwad

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
    • http://www.azzwad.tk
Re: problemas con arreglos
« Respuesta #1 en: Domingo 16 de Noviembre de 2003, 06:16 »
0
Hola, espero poder responderte correctamente a tu pregunta.

Mira viendo mas o menos lo que querias hacer hice un pequeño codigo para que veas, ya lo corri y si imprime bien los valores, checa:

#!usr/bin/perl

#defines valores al arreglo
@arr[0]=11;
@arr[1]=12;
@arr[2]=13;
@arr[3]=14;
@arr[4]=15;

#imprimes arreglo
for( $i=0; $i<5; $i++)   
{
       print @arr[$i]," ";
}


Si lo que quieres es pedir los valores desde el teclado, el codigo seria asi

#!usr/bin/perl

#pides valores al arreglo
for( $i=0; $i<5; $i++)   
{
   $num=<STDIN>;
   chop($num);
   @arr[$i]=$num;
   
}

#imprimes arreglo
for( $i=0; $i<5; $i++)   
{
       print @arr[$i]," ";
}



Bueno espero le entiendas, no soy bueno para explicar pero espero que con el codigo quede bien

Saludos.

Alma Janeth

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: problemas con arreglos
« Respuesta #2 en: Miércoles 19 de Noviembre de 2003, 18:33 »
0
gracias ya me almacena los valores y si me sirvio lo que me escribiste :angel:

azzwad

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
    • http://www.azzwad.tk
problemas con arreglos
« Respuesta #3 en: Jueves 20 de Noviembre de 2003, 04:50 »
0
No hay por que, lo que necesites por aca andamos
suerte!.

explorer

  • Miembro activo
  • **
  • Mensajes: 69
    • Ver Perfil
Re: problemas con arreglos
« Respuesta #4 en: Domingo 9 de Julio de 2006, 01:08 »
0
Es un error muy común de los programadores de Perl, confundir el uso de la '@' y del '$' en los arrays.

Una '@' hace referencia a un array, desde luego... pero al array en su conjunto. Si sólo queremos acceder a un sólo elemento, estamos queriendo acceder a un escalar, por lo que estamos obligados a usar el '$'.

En esta línea:
Código: Text
  1. @array[1] = 5;
  2.  
lo que estamos haciendo es:
1.- dado que existe una '@' delante de 'array', Perl convierte a '5' en un array (de un sólo elemento, claro).
2.- Perl coge todos los elementos de ese nuevo array y los distribuye por los elementos de @array indicados por los índices que están entre corchetes. En este caso, sólo hay un '1', por lo que coge el primer elemento del nuevo array (el '5') y lo mete en la posición segunda ([1]) del @array.

Si en las primeras líneas del programa tuvieramos la costumbre de poner
Código: Text
  1. use warnings;
  2.  
entonces recibiríamos un aviso así:
Citar
Scalar value @arr[1] better written as $arr[1] at -e line 1.

Vamos a modificar el ejemplo propuesto por azzwad para intentar verlo mejor:
Código: Text
  1. #!usr/bin/perl
  2. use warnings;
  3. use strict;
  4.  
  5. #defines valores al arreglo
  6. @arr[0..4] = (11, 12, 13, 14, 15);
  7.  
  8. #imprimes arreglo
  9. for( &#036;i=0; &#036;i&#60;5; &#036;i++) { print &#036;arr[&#036;i],&#34; &#34; }
  10.  

Como véis, sí podemos hacer una asignación de estas dos maneras:
Código: Text
  1. @arr[0..4] = (11, 12, 13, 14, 15);
  2. &#036;arr[0] = 11; &#036;arr[1] = 12; &#036;arr[2] = 13; # etc.
  3.  
pero no así:
Código: Text
  1. @arr[0] = 11; @arr[1] = 12; @arr[3] = 13; # etc.
  2.  

El uso del '@' debe quedar restringido sólo en el caso de que queramos hacer referencia a más de un elemento. Ejemplo: si queremos pintar los elementos que van desde la posición 1 a la 3 entonces haríamos:
Código: Text
  1. print &#34;@arr[1..3]&#092;n&#34;; # 12 13 14
  2.  

El uso de '@arr[0]=11;' sólo está permitido a partir del Perl6.