Foros del Web » Programación para mayores de 30 ;) » Programación General »

Organizacion de un arreglo por un campo?

Estas en el tema de Organizacion de un arreglo por un campo? en el foro de Programación General en Foros del Web. Hola a todos Muy agradecido por todo lo que me ayudan y enseñan Tengo una duda Tengo un archivo de la siguiente manera 1::carlos::10000::NULL:: 2::pedro::20000::NULL:: ...
  #1 (permalink)  
Antiguo 17/08/2008, 19:39
 
Fecha de Ingreso: octubre-2007
Mensajes: 56
Antigüedad: 17 años, 1 mes
Puntos: 0
Organizacion de un arreglo por un campo?

Hola a todos
Muy agradecido por todo lo que me ayudan y enseñan

Tengo una duda

Tengo un archivo de la siguiente manera

1::carlos::10000::NULL::
2::pedro::20000::NULL::
3::marcos::210000::NULL::
4::david::1000::NULL::
5::Michael::150000::NULL::
6::George::17200::NULL::
7::Javier::18000::NULL::

Necesito mostrarlos en una tabla HTML, pero necesito que salgan ordenados por la tercer columna de menor a mayor, mejor dicho deberia quedar asi:


4::david::1000::NULL::
1::carlos::10000::NULL::
6::George::17200::NULL::
7::Javier::18000::NULL::
2::pedro::20000::NULL::
5::Michael::150000::NULL::
3::marcos::210000::NULL::

con sql seria facil, pero usando archivos planos y teniendo en cuenta que el valor de la tercer columna se guarda como texto como lo deberia hacer ???

muchas gracias por la colaboracion:
  #2 (permalink)  
Antiguo 18/08/2008, 04:20
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Organizacion de un arreglo por un campo?

Usando una transformada de Schwartz ( http://en.wikipedia.org/wiki/Schwartzian_transform ):

Código:
#!/usr/bin/perl
use strict;

my @fichero = qw(
    1::carlos::10000::NULL::
    2::pedro::20000::NULL::
    3::marcos::210000::NULL::
    4::david::1000::NULL::
    5::Michael::150000::NULL::
    6::George::17200::NULL::
    7::Javier::18000::NULL::
);

my @ordenado =
    map  { $_->[0]                 }
    sort { $a->[1] <=> $b->[1]     }
    map  { [ $_, (split '::')[2] ] }
    @fichero;

print "$_\n" for @ordenado;

__END__
  #3 (permalink)  
Antiguo 20/08/2008, 15:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 56
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Organizacion de un arreglo por un campo?

gracias por la ayuda

la trasnformada es muy buena y la estoy usando bien, muchisisisisimas gracias jferrero
pero esta pregunta se debe a que una cosa es la organizacion por cadena y otra como numero,

Pues 10 es menor que 100 en numeros pero no sabria si "10" es menor que "100" y yo necesito organizar la salida del arreglo por el valor numerico
algo asi como

select * from tabla order by sueldo; //del sql

Esto funcionaria con perl ?

Muchas gracias por la ayuda.

Carlos
  #4 (permalink)  
Antiguo 22/08/2008, 08:06
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 525
Antigüedad: 18 años, 6 meses
Puntos: 11
Respuesta: Organizacion de un arreglo por un campo?

Si quieres hacer una ordenación alfabética, en lugar de numérica, cambia '<=>' por 'cmp'.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:11.