aSort

aSort

Postby goosfancito » Thu Jan 28, 2021 1:03 pm

Hola. tengo esta matriz
Code: Select all  Expand view  RUN
  ::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  Expand view  RUN
                { "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  Expand view  RUN
ASort( ::aDatos,,, { | x, y | x[ 4 ] < y[  4] } )


gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Postby TOTOVIOTTI » Thu Jan 28, 2021 1:53 pm

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
TOTOVIOTTI
 
Posts: 422
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: aSort

Postby goosfancito » Thu Jan 28, 2021 1:57 pm

Gracias!
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Postby nageswaragunupudi » Sat Jan 30, 2021 11:25 pm

Code: Select all  Expand view  RUN
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
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: aSort

Postby goosfancito » Mon Feb 01, 2021 4:44 pm

Rao.
Please can you sort this:

Code: Select all  Expand view  RUN

  ::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]
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Postby nageswaragunupudi » Mon Feb 01, 2021 4:53 pm

Please explain in what order you want to sort?
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: aSort

Postby JESUS MARIN » Mon Feb 01, 2021 5:40 pm

perdón por la intromisión.

Tu dato :

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

¿ese 21 corresponde a 1921?
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: aSort

Postby goosfancito » Mon Feb 01, 2021 6:42 pm

asi es
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Postby JESUS MARIN » Mon Feb 01, 2021 7:28 pm

Entonces, dónde está el problema ?

no lo encuentro ......

debo estar obcecado hoy.
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: aSort

Postby goosfancito » Mon Feb 01, 2021 7:35 pm

hay tres fechas,
la fecha de medio deberia de no estar ahi.
esta mal ordenado.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: aSort

Postby JESUS MARIN » Tue Feb 02, 2021 8:51 am

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
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 113 guests