Ordenar Array com duas culunas Asort()
Moderador: Moderadores
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Ordenar Array com duas culunas Asort()
Olá amigos!
Tenho uma Array com várias colunas e queria saber se tem como eu ordenar com o Asort() a primeira coluna em ordem Decrescente e a segunda em ordem Crescente?
Desde já agradeço a atenção.
Tenho uma Array com várias colunas e queria saber se tem como eu ordenar com o Asort() a primeira coluna em ordem Decrescente e a segunda em ordem Crescente?
Desde já agradeço a atenção.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ordenar Array com duas culunas Asort()
Regra geral do ASort:
A e B são os elementos a comparar, e a expressão é o que usar pra comparar o maior/menor.
Não decorei se crescente/decrescente é .T. ou .F., mas so inverter > <, se precisar.
Então....
Código: Selecionar todos
ASort( aArray, , , { | a, b | a > b } )
Não decorei se crescente/decrescente é .T. ou .F., mas so inverter > <, se precisar.
Então....
Código: Selecionar todos
Asort( aArray, , , { | a, b | a[ 1 ] > b[ 1 ] .OR. ( a [ 1 ] == b[ 1 ] .AND. a[ 2 ] < b[ 2 ] ) } )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Ordenar Array com duas culunas Asort() - RESOLVIDO
Meu amigo Quintas,
Muito obrigado pela pronta ajuda, ficou muito bom mesmo.
Muito obrigado pela pronta ajuda, ficou muito bom mesmo.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Ordenar Array com duas culunas Asort()
Olá pessoal!
Só para efeito de ilustração:
Eu acho esta mais "elegante"...
T+, Euclides
Só para efeito de ilustração:
Código: Selecionar todos
ASort( aArray, nil, nil, { |x,y| If( x[ 1 ] == y[ 1 ], x[ 2 ] < y[ 2 ], x[ 1 ] < y[ 1 ] ) } )
T+, Euclides
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ordenar Array com duas culunas Asort()
Concordo.
Fica instantâneo decifrar o que acontece.
Só acho desnecessário usar NIL, apesar de destacar a necessidade de dois elementos vazios.
Fica instantâneo decifrar o que acontece.
Só acho desnecessário usar NIL, apesar de destacar a necessidade de dois elementos vazios.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Ordenar Array com duas culunas Asort()
Muito obrigado Euclides.
Valeu mesmo.
Valeu mesmo.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Ordenar Array com duas culunas Asort()
Reabrindo o Tópico.
Precisei ordenar por 3 colunas e vejam como ficou:
Precisei ordenar por 3 colunas e vejam como ficou:
Código: Selecionar todos
ASort(aDespesa, , , { |x, y| If( x[ 1 ] == y[ 1 ], x[ 2 ] < y[ 2 ], If( x[ 2 ] == y[ 2 ], x[ 3 ] < y[ 3 ], x[ 1 ] < y[ 1 ] )) } )At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ordenar Array com duas culunas Asort()
Tenho a impressão de que a segunda análise está errada.
Código: Selecionar todos
ASort( aDespesa, { | x, y | iif( x[ 1 ] == y[ 1 ], iif( x[ 2 ] == y[ 2 ], x[ 3 ] < y[ 3 ], x[ 2 ] < y[ 2 ] ), x[ 1 ] < y[ 1 ] ) } )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Ordenar Array com duas culunas Asort()
É isso mesmo.
Na anterior, se o primeiro for igual, apenas analisa o segundo e deixa o terceiro sem ordenar.
E se o primeiro for diferente, analisa se o segundo é igual pra decidir, e deixa o primeiro sem ordenar e talvez o terceiro também.
No que coloquei:
Se o primeiro e o segundo forem iguais, analisa o terceiro.
Se apenas o primeiro for igual, analisa o segundo.
Se o primeiro for diferente, analisa o primeiro.
Na anterior, se o primeiro for igual, apenas analisa o segundo e deixa o terceiro sem ordenar.
E se o primeiro for diferente, analisa se o segundo é igual pra decidir, e deixa o primeiro sem ordenar e talvez o terceiro também.
No que coloquei:
Se o primeiro e o segundo forem iguais, analisa o terceiro.
Se apenas o primeiro for igual, analisa o segundo.
Se o primeiro for diferente, analisa o primeiro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/