• Publicidad

Ordenamiento descendente

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Ordenamiento descendente

Notapor lnx_hg » 2008-10-06 17:30 @771

Hola, disculpen que los moleste pero tengo un problema y no he podido encontrar la solución. Tengo un objeto que debo ordenar de mayor a menor, dependiendo de una rama. El objeto está estructurado de la siguiente manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$obj->{total_visit}->{$nombre}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Rama total_visit es la que debo considerar para el ordenamiento, es decir, el registro que contenga el número más alto debe de ir al principio.
Ya intenté con "sort" y me lo toma como si fueran caracteres, es decir, me pone: 1, 11, 2, 3, 31, 4. Si alguien conoce un comando para hacer lo que pido, se lo agradeceré mucho.

¡¡Gracias!!
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Publicidad

Notapor explorer » 2008-10-06 17:48 @783

Debes usar sort() pero con ordenación numérica: sort {$a <=> $b}. Por defecto, es alfanumérica.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor lnx_hg » 2008-10-06 18:02 @793

Gracias por contestar. Me pudieras dar un ejemplo sencillito sobre la implementación y estoy investigando en CPAN y pues no entiendo dado que no estoy tan avanzado en Perl.

Este así es como lo implemento yo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $total (sort keys %{$obj}) {
        foreach $customer (keys %{$obj->{$total}}) {
                print $customer ." - ". $total."<br>";
                }
        }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578

Notapor explorer » 2008-10-06 18:13 @801

No tienes que mirar en CPAN. No se trata de un módulo. Tienes que mirar la página de sort().

No entiendo mucho lo que expones. Parece que estás volcando los valores de %{$obj}, pero no ordenándolos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor lnx_hg » 2008-10-06 18:27 @810

Muchas gracias por tu ayuda, fue muy importante :D, acabo de encontrar la solución con tu ayuda. La respuesta que necesitaba era:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $total ( sort { $b <=> $a }  keys %{$customer} )
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Te explico cual era mi problema:
Necesitaba recorrer un objecto que contenía dos ramas; la primera es la que debo ordenar, esta rama contiene el total de visitas de un cliente y la otra contiene el nombre, en un reporte los clientes con mayor frecuencia deben de aparecer en la parte de arriba.

POR TU AYUDA, MUCHAS GRACIAS.
lnx_hg
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2007-08-13 12:52 @578


Volver a Intermedio

¿Quién está conectado?

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

cron