• Publicidad

Cálculo de la moda

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

Cálculo de la moda

Notapor kekaes » 2009-10-22 03:25 @184

Hola. Soy nueva en esto del Perl y la verdad es que tengo algún problemilla.
Me han pasado este programa que calcula la moda de una serie.

Entiendo que foreach() funciona para ir recorriendo la lista. El problema lo tengo en la línea siguiente.

Haciendo un print() de b (dentro del bucle) veo que es como un sumatorio de las veces que aparece cada número, pero no entiendo cómo lo hace.

Si alguien me puede ayudar... :roll:
Gracias

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. @a = (10, 30, 30, 20, 30, 40, 30, 40, 30, 20, 20, 20);
  4. foreach $n (@a) {
  5.   $b[$n]++;
  6. }
  7. $max = $pos = 0;
  8.  
  9. foreach $n (@b) {
  10.   if ($max < $n) {
  11.     $max = $n;
  12.     $moda = $pos;
  13.   };
  14.   $pos++;
  15. }
  16.  
  17. print "La moda es el valor $moda que aparece $max veces\n";
  18.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
kekaes
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2009-10-22 03:16 @178

Publicidad

Re: Cálculo de la moda

Notapor explorer » 2009-10-22 06:16 @303

Bienvenido a los foros de Perl en Español, kekaes.

Efectivamente, en @b se va sumando cada aparición de cada número.

Lo que hace es sumar 1 en la posición del arreglo que es igual al número leído desde @a.

Ejemplo. Desde @a leemos el primer valor (10). Pues la línea en cuestión suma 1 a $b[10]. Como al principio valía 0 (por no estar inicializado el arreglo), ahora vale 1. Más tarde, si encontramos otro valor 10, se incrementará en 1 más $b[10], por lo que valdrá 2. Y así. Lo mismo pasará con los valores 30 (se incrementará el trigésimo valor de @b), 40 (se incrementará el cuadragésimo valor), etc.

Lo que hace después es recorrer @b y ver cuál de esos valores almacena el mayor valor. Y lo muestra.

Ahora bien... ¿Para qué sirve $pos? Parece que para nada...
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: Cálculo de la moda

Notapor kekaes » 2009-10-22 06:21 @306

Muchas gracias. Ahora ya entiendo lo que hace :wink:
kekaes
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2009-10-22 03:16 @178


Volver a Básico

¿Quién está conectado?

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