Página 1 de 1

Matriz

NotaPublicado: 2016-09-25 22:05 @962
por jairo15
Yo solía hacer matrices en C pero ahora en Perl veo que es algo diferente.

¿Cómo se puede hacer una matriz en la que el usuario ingrese el valor en cada posición?

Re: Matriz

NotaPublicado: 2016-09-25 23:09 @006
por explorer
En Perl se hace de la misma manera: listas de listas de elementos.

my @matriz;

$matriz[0] = [ 1, 2, 3, ];

$matriz[1][2] = 42;

Más información en tu propio ordenador en perldoc perllol, y en la Web (traducido al español).

Re: Matriz

NotaPublicado: 2016-09-26 14:25 @642
por jairo15
Al momento de imprimir una matriz de 5x5 me sale una línea hacia abajo con los valores, como si fuera solo una dimensión.

El código es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @matriz;
  2.  
  3. for ( $i = 1; $i <= 5; ++$i ) {
  4.     for ( $j = 1; $j <= 5; ++$j ) {
  5.         print "Ingrese el valor de la posición: [$i,$j]->";
  6.         $matriz[$i][$j] = <STDIN>;
  7.     }
  8. }
  9.  
  10. for ( $i = 1; $i <= 5; ++$i ) {
  11.     for ( $j = 1; $j <= 5; ++$j ) {
  12.         print "\t$matriz[$i][$j]";
  13.         print "\n";
  14.     }
  15. }
  16. <>;
  17.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Re: Matriz

NotaPublicado: 2016-09-26 15:22 @682
por explorer
Es porque estás almacenando los valores junto con el carácter de fin de línea (al pulsar la tecla Enter, en el <STDIN>).

La solución es quitar esos caracteres:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         chomp($matriz[$i][$j] = <STDIN>);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Y luego, a la hora de imprimir, hay que poner el "\n" al final de cada línea de la matriz, así que tienes que mover la línea 13 por debajo de la 14 (final del bucle for() entre 11 y 14).

Quedaría un poco más corto así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @matriz;
  2.  
  3. for my $i (1 .. 5 ) {
  4. for my $j (1 .. 5 ) {
  5.         print "Ingrese el valor de la posición: [$i,$j]->";
  6.         chomp($matriz[$i][$j] = <STDIN>);
  7.     }
  8. }
  9.  
  10. for my $i (1 .. 5 ) {
  11. for my $j (1 .. 5 ) {
  12.         print "\t$matriz[$i][$j]";
  13.     }
  14.     print "\n";
  15. }
  16. <>;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Matriz

NotaPublicado: 2017-02-27 16:32 @731
por charlygarcia
Alguna vez me hice un videillo, creo que se puede mejorar, pero en esa época era con fines ilustrativos.

Puedes revisarlo: