aSort

Post Reply
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

aSort

Post by goosfancito »

Hola. tengo esta matriz

Code: Select all

   ::aDatos := { ;
                 { "Raiz",    1,  1, 0, CToD( "01/02/2021" ) }, ;
                 { "uno",     1,  2, 1, CToD( "10/02/2021" ) }, ;
                 { "dos",     1,  3, 1, CToD( "05/02/2021" ) }, ;
                 { "tres",    1,  4, 1, CToD( "03/01/1821" ) }, ;
                 { "cuatro",  1,  5, 1, CToD( "01/01/1921" ) }, ;
                 { "cinco",   1,  6, 2, CToD( "05/01/1980" ) }, ;
                 { "seis",    1,  7, 3, CToD( "07/02/2020" ) }, ;
                 { "diez",    1,  8, 5, CToD( "02/05/1986" ) }, ;
                 { "trece",   1,  9, 8, CToD( "08/09/1972" ) }, ;
                 { "catorce", 1, 10, 9, CToD( "10/09/2019" ) }, ;
                 { "quince",  1, 11, 9, CToD( "02/08/1950" ) } ;
               }
y necesito con aSort (de poderse) ordenar por el 4to valor y a demas por la fecha, para que por ejemplo estas dos lineas queden ordenadas

Code: Select all

                 { "catorce", 1, 10, 9, CToD( "10/09/2019" ) }, ;
                 { "quince",  1, 11, 9, CToD( "02/08/1950" ) } ;
 
logro ordenarlo por uno de los datos pero no se ocmo hacerlo para que se haga por el de la fecha

Code: Select all

ASort( ::aDatos,,, { | x, y | x[ 4 ] < y[  4] } )
gracias.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
TOTOVIOTTI
Posts: 334
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: aSort

Post by TOTOVIOTTI »

Goosfancito...

ASort( ::aDatos,,, { | x, y | x[ 4 ] < y[ 4] .and. x[ 5 ] < y[ 5] }


puedes cambiar como quieras lo que está dentro del codeblock.. usá la comparación que necesites, mayor, menor o igual...

o puedes hacer (ejemplo)

ASort( ::aDatos,,, { | x, y | x[ 4 ] < y[ 4] .and. x[ 5 ] > y[ 5] .and. x[ 1 ] < y[ 1]} (siempre considerá que "x" e "y" son los datos que compara de la misma matriz.
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Post by goosfancito »

Gracias!
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: aSort

Post by nageswaragunupudi »

Code: Select all

ASort( ::aDatos, nil, nil, { |x,y| If( x[ 4 ] == y[ 4 ], x[ 5 ] < y[ 5 ], x[ 4 ] < y[ 4 ] ) } )
Regards

G. N. Rao.
Hyderabad, India
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Post by goosfancito »

Rao.
Please can you sort this:

Code: Select all

  ::aDatos := { ;
                 { "Raiz",    1,  1, 0, CToD( "01/02/2021" ), 0 }, ;
                 { "cuatro",  1,  5, 1, CToD( "01/01/1921" ), 0 }, ;
                 { "uno",     1,  2, 1, CToD( "01/01/2020" ), 0 }, ;
                 { "dos",     1,  3, 1, CToD( "01/02/2021" ), 0 }, ;
                 { "tres",    1,  4, 8, CToD( "03/01/2022" ), 0 }, ;
                 { "cinco",   1,  6, 9, CToD( "05/01/1980" ), 0 }, ;
                 { "seis",    1,  7, 2, CToD( "07/02/2020" ), 0 }, ;
                 { "diez",    1,  8, 5, CToD( "02/05/1986" ), 0 }, ;
                 { "trece",   1,  9, 8, CToD( "08/09/1972" ), 0 }, ;
                 { "catorce", 1, 10, 9, CToD( "10/09/2019" ), 0 }, ;
                 { "quince",  1, 11, 10, CToD( "12/10/2050" ), 0 }, ;
                 { "i_idea",  1, 12, 11, CToD( "12/10/2050" ), 0 } ;
               }
because
{ "cuatro", 1, 5, 1, CToD( "01/01/1921" ), 0 }, ;
{ "uno", 1, 2, 1, CToD( "01/01/2020" ), 0 }, ;
{ "dos", 1, 3, 1, CToD( "01/02/2021" ), 0 }, ;
{ "tres", 1, 4, 8, CToD( "03/01/2022" ), 0 }, ;
not sort to me.

::adatos[ 2][ 1] (C6) => "cuatro"
::adatos[ 2][ 2] (N) => 7302136
::adatos[ 2][ 3] (N) => 5
::adatos[ 2][ 4] (N) => 1
::adatos[ 2][ 5] (D) => 01/01/21 <<<<<<<<<<<<<<<<<<<<<<
::adatos[ 2][ 6] (N) => 2

::adatos[ 3][ 1] (C3) => "uno"
::adatos[ 3][ 2] (N) => 7302280
::adatos[ 3][ 3] (N) => 2
::adatos[ 3][ 4] (N) => 1
::adatos[ 3][ 5] (D) => 01/01/20
::adatos[ 3][ 6] (N) => 3

::adatos[ 4][ 1] (C3) => "dos"
::adatos[ 4][ 2] (N) => 7301488
::adatos[ 4][ 3] (N) => 3
::adatos[ 4][ 4] (N) => 1
::adatos[ 4][ 5] (D) => 01/02/21 <<<<<<<<<<
[/quote]
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: aSort

Post by nageswaragunupudi »

Please explain in what order you want to sort?
Regards

G. N. Rao.
Hyderabad, India
JESUS MARIN
Posts: 91
Joined: Wed Jan 02, 2019 8:36 am

Re: aSort

Post by JESUS MARIN »

perdón por la intromisión.

Tu dato :

::adatos[ 2][ 5] (D) => 01/01/21 <<<<<<<<<<<<<<<<<<<<<<

¿ese 21 corresponde a 1921?
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Post by goosfancito »

asi es
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
JESUS MARIN
Posts: 91
Joined: Wed Jan 02, 2019 8:36 am

Re: aSort

Post by JESUS MARIN »

Entonces, dónde está el problema ?

no lo encuentro ......

debo estar obcecado hoy.
User avatar
goosfancito
Posts: 1392
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Post by goosfancito »

hay tres fechas,
la fecha de medio deberia de no estar ahi.
esta mal ordenado.
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
JESUS MARIN
Posts: 91
Joined: Wed Jan 02, 2019 8:36 am

Re: aSort

Post by JESUS MARIN »

Veamos.
Según dices, esto no es correcto ?

::adatos[ 2][ 5] (D) => 01/01/21
...
::adatos[ 3][ 5] (D) => 01/01/20
...
::adatos[ 4][ 5] (D) => 01/02/21

pero ....

=> 01/01/21 = 01/01/1921
=> 01/01/20 = 01/01/2020
=> 01/02/21 = 01/02/2021

no ?

y por tanto si sería correcto
Post Reply