• Publicidad

Hallar mayor y menor dentro de un array

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

Hallar mayor y menor dentro de un array

Notapor Persefone » 2014-06-19 07:33 @356

Hola, el programa debería ser capaz de sacar el valor menor y mayor de un array y de un grupo de números. No tengo claro cómo hacer correctamente el paso del for(). Agradecería mucho una ayuda, por favor.
Gracias :)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ga->( [ [ 100, 200 ], [ 100, 200 ], [ 4, 14 ], [ 8, 14 ] ] );
  2.  
  3. my $genes = $_[0];
  4.  
  5. my $x1 = $genes->[0] / 10;
  6. my $x2 = $genes->[1] / 10;
  7. my $x3 = $genes->[2];
  8. my $x4 = $genes->[3];
  9.  
  10. @variables = ( $x1, $x2, $x3, $x4 );
  11.  
  12. my $mayor = 0;
  13. my $n     = 68;
  14. for ( $i = 0; $i <= 3; $i++ ) {
  15.     if ( $variables[0] + $variables[1] + $variables[2] + $variables[3] == 68 ) {
  16.         $mayor = $n;
  17.     }
  18. }
  19.  
  20. my $menor = 0;
  21. $m = 36;
  22. for ( $i = 0; $i <= 3; $i++ ) {
  23.     if ( $variables[0] + $variables[1] + $variables[2] + $variables[3] == 36 ) {
  24.         $menor = $m;
  25.     }
  26. }
  27.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2014-06-19 14:17 @636, editado 2 veces en total
Razón: Formateado de código con Perltidy y poner marcas Perl
Persefone
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2014-06-19 07:20 @347

Publicidad

Re: Hallar mayor y menor dentro de un array

Notapor explorer » 2014-06-19 14:28 @644

Bienvenida a los foros de Perl en Español, Persefone.

Si queremos buscar el máximo y mínimo de @variables:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $mayor = -1e20;      # -1·10^20
  2. my $menor = +1e20;      #  1·10^20
  3.  
  4. for my $valor (@variables) {
  5.  
  6.     if ($mayor < $valor) {      # $valor es mayor que el $mayor encontrado
  7.         $mayor = $valor;        # hasta ahora
  8.     }
  9.     if ($menor > $valor) {      # $valor es menor que el $menor encontrado
  10.         $menor = $valor;        # hasta ahora
  11.     }
  12. }
  13. say "Mayor: $mayor. Menor: $menor";
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: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Hallar mayor y menor dentro de un array

Notapor Pichuzard » 2014-08-31 15:35 @691

Yo, la verdad, prefiero inicializar los valores de mayor y menor a algún valor del arreglo ya que de la forma que propone explorer si todos los elementos están por debajo del valor que se le asigna a $mayor entonces tendremos un error ya que el valor mayor será el asignado a la variable $mayor aunque no exista en el arreglo. Algo análogo ocurre cuando todos los valores están sobre el valor asignado a la variable $menor.

Mi propuesta es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $mayor = $array[0];
  2. my $menor = $mayor;
  3.  
  4. foreach(@array){
  5.         $mayor=$_ if $_>$mayor;
  6.         $menor=$_ if $_<$menor;
  7. }
  8. print "Mayor: $mayor\nMenor: $menor\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Donde @array es un array unidimensional que guarda los valores numéricos donde buscar.

Lo que sí te puedo asegurar es que lo que estás haciendo en tu código no es encontrar el menor y el mayor.
Pichuzard
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-05-15 17:13 @759

Re: Hallar mayor y menor dentro de un array

Notapor explorer » 2014-08-31 18:36 @816

Es una muy buena idea, pero la idea era mostrar eso: la idea. Depende después de cada caso particular.

Por ejemplo, tanto mi propuesta como la tuya no tiene en cuenta los casos extremos, como por ejemplo, que el array esté vacío.

Entonces, se trata de entender lo básico, y luego adaptarlo a cada caso.

Pero tu solución me gusta. Me la anoto.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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

cron