• Publicidad

Números y letras

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Números y letras

Notapor colorado » 2011-01-25 17:21 @765

Intentaré explicarme lo mejor posible:
Tengo dos listas; una con el nombre numeros.txt y otra con el nombre letras.txt.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
numeros.txt      letras.txt
1                 a
2                 b
3                 c
4
5
6
7
8
9
0
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Lo que quiero es conseguir esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
a 1
b 2
c 3
a 4
b 5
c 6
a 7
b 8
c 9
a 0
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Mi primer programa fue este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
numeros.txt      letras.txt
1                 a
2                 b
3                 c
4                 d
5                 e
6                 f
7                 g  
8                 h    
9                 i
0                 j
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y salio con el resultado que quería
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
0 j
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (NUMEROS, 'numeros.txt');
  2. my @numeros = <NUMEROS>;
  3. chomp @numeros;
  4. close(NUMEROS);
  5. open (LETRAS, 'letras.txt');
  6. my @letras = <LETRAS>;
  7. chomp @letras;
  8. close(LETRAS);
  9. for my $i (0 .. $#letras)  {
  10. print "\n";
  11. print " $numeros[$i] $letras[$i]"
  12. };
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



¿Cómo podría realizarlo?
Gracias
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658

Publicidad

Re: Números y letras

Notapor explorer » 2011-01-25 17:56 @789

Deberías hacer que el bucle principal recorriese el array más largo, en este caso, los números.

Antes del bucle, guardas el número de elementos del array más corto.

Y dentro del bucle, pintas el elemento del array más largo; y del segundo, te vale con un poco de matemáticas: usas el operador módulo, para que circule por el rango de índices del segundo array.

Algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $l = @array_letras;                       # número de elementos de las letras

for (my $i = 0; $i < @array_numeros; $i++) {       # recorremos los índices
    print
        $array_numeros[$i],                        # pintamos el $i-esimo valor de números y
        ' ',
        $array_letras[$i % $l],                    # el $i-ésimo valor circulando entre 0 y $l-1
        "\n"
        ;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Números y letras

Notapor colorado » 2011-01-26 11:53 @536

Gracias por tu respuesta, explorer.

He intentado hacer lo que me dices (seguro que mal), y este es el código que me quedó.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (LETRAS, 'letras.txt');
  2. my @array_letras = <LETRAS>;
  3. chomp @array_letras;
  4. close(LETRAS);
  5. open (NUMEROS, 'numeros.txt');
  6. my @array_numeros = <NUMEROS>;
  7. chomp @array_numeros;
  8. close(NUMEROS);
  9.  
  10. my $l = @array_letras;
  11.  
  12. for (my $i = 0; $i < @array_letras; $i++) {
  13. print "\n";
  14. print "$array_numeros[$i] $array_letras[$i % $l]";
  15. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El resultado:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
1 a
2 b
3 c
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Es lo que entendí en tu respuesta, pero no me funcionó. ¿Podrías corregirlo?

Un saludo
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658

Re: Números y letras

Notapor explorer » 2011-01-26 11:56 @539

Fíjate en el código que publiqué... no estoy recorriendo las letras, sino los números.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Números y letras

Notapor colorado » 2011-01-26 12:29 @562

Ok, conseguido. Muchísimas gracias, tío, por tu paciencia.

Un saludo.
colorado
Perlero nuevo
Perlero nuevo
 
Mensajes: 73
Registrado: 2010-01-31 14:48 @658


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 16 invitados