Clipper On Line • Ver Tópico - Inverter array

Inverter array

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Inverter array

Mensagempor JoséQuintas » 17 Ago 2020 10:27

Pra resolver o caso do ADO retornando matriz ao contrário:

FUNCTION InverseArray( aSource )

   LOCAL aTarget, nRow, nCol, nMaxRow, nMaxCol

   nMaxRow := Len( aSource[ 1 ] )
   nMaxCol := Len( aSource )

   aTarget := Array( nMaxRow, nMaxCol )

   FOR nRow = 1 TO nMaxRow
      FOR nCol = 1 TO nMaxCol
         aTarget[ nRow, nCol ] := aSource[ nCol, nRow ]
      NEXT
   NEXT

   RETURN aTarget


FUNCTION InverseArray( a )

   LOCAL aNew, xCol, xRow

   aNew := Array( Len( a[ 1 ] ), Len( a ) )
   FOR EACH xCol IN a
      FOR EACH xRow IN xCol
         aNew[ xRow:__EnumIndex ][ xCol:__EnumIndex ] := xRow
      NEXT
   NEXT

   RETURN aNew


É bom pra ilustrar o FOR/EACH também.
A diferença básica neste caso é que FOR/NEXT trabalha com o contador, enquanto FOR/EACH trabalha com o conteúdo.
No FOR/EACH o contador pode ser obtido pelo :__EnumIndex

As rotinas são relativamente simples:
É criado um array inverso, se era a[ 5, 10] é criado um array a[ 10, 5 ]
E depois, basta colocar o que era linha,coluna em coluna,linha

Nota:
Durante a pesquisa sobre isso do ADO, achei uma rotina em Visual Basic que fazia isso, apenas fiz igual em Harbour.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14712
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 869 vezes



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro