• Publicidad

Problema de ordenar y comparar

¿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.

Problema de ordenar y comparar

Notapor luisbal » 2008-09-12 09:53 @453

Estimados amigos: llevo mucho tiempo tratando de encontrar una solución que supongo será sencilla para ustedes.

La idea es esta: la base de datos de mi carrito (flat database) carga productos, precios, etc. pero además un número (1,2,3,4) dependiendo de la disponibilidad. 1 es 24 horas, 2, 48 horas, 3, 72 horas, etc. La idea es que el script lea la data y me diga el número mayor.

Además mi data tiene dos tipos de separaciones: %% separa los ítem y | separa los datos del producto:

id_1|prod_1|precio_1|disponi_1%%id_2|prod_2|precio_2|disponi_2%%id_3|prod_3|disponi_3

Ejemplo:
L1|libro A|23.00|3%%L2|libro B|14.00|3%%L5|libro C|19.00|2

En este caso, el producto de mayor disponibilidad sería el libro B, porque su disponibilidad es 3. Entonces, quiero que el script me dé este resultado 3.

Creo que hay que abrir la data luego usar sort y luego <=>. Les agradeceré me pudieran dar una solución para copiar y pegar en mi script general. MUCHAS GRACIAS.
luisbal
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2008-09-12 09:36 @442

Publicidad

Notapor explorer » 2008-09-12 11:18 @512

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

Esta es una de las múltiples soluciones:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my $maxima_disponibilidad = -1;
my $libreria = 'L1|libro A|23.00|3%%L2|libro B|14.00|3%%L5|libro C|19.00|2';
my @libros   = split '%%', $libreria;

for (@libros) {
    my (undef,undef,undef,$disponibilidad) = split '\|';

       $maxima_disponibilidad = $disponibilidad
    if $maxima_disponibilidad < $disponibilidad;
}

print "Disponibilidad: $maxima_disponibilidad\n";

__END__
Coloreado en 0.002 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

Notapor Jenda » 2008-09-14 12:57 @581

Hazlo todo más fácil para ti. Importa los datos a una base de datos que te facilite usar SQL. Por ejemplo, DBD::SQLite. No tienes que instalar nada más que los módulos DBI y DBD::SQLite.

Si tienes los datos en la BD puedes obtener la máxima disponibilidad con

Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
  SELECT max(disponibilidad) FROM productos
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y después todos los productos con esa disponibilidad con

Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
  SELECT * FROM productos WHERE disponibilidad = <este numero>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Va a ser más fácil añadir, alterar o remover productos en la BD. Y más rápido.

Jenda
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

muchas gracias

Notapor luisbal » 2008-09-15 20:26 @893

Estimados amigos:
Muchas gracias. Al fin he podido resolver este problema gracias a la generosa ayuda de ambos. Agradezco sobre todo la rapidez en las respuestas.
luisbal
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2008-09-12 09:36 @442


Volver a Intermedio

¿Quién está conectado?

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