Adicionando uma coluna em um vetor bidimensional

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

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionando uma coluna em um vetor bidimensional

Mensagem por asimoes »

Usando aEval e Hb_aIns, usado para adicionar em vetor bidimensional

Código: Selecionar todos

aAdd( aVetor, {"1", "2", "3"})

aEval( aVetor, {|e,n| Hb_aIns( aVetor, n, { e[1], e[2], e[3], "4" } ) } )

Só pra não perder a dica.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionando uma coluna em um vetor bidimensional

Mensagem por asimoes »

Código: Selecionar todos

aVetorX := {}

aEval( aVetor, {|e,n| aAdd( aVetorx, { e[1], e[2], e[3], Hb_NtoC(N) } ) } )
A ideia é adicionar uma coluna nova no vetor já existente, existe uma maneira de fazer isso?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Adicionando uma coluna em um vetor bidimensional

Mensagem por JoséQuintas »

Analise com calma.

Vetores são listas.

Código: Selecionar todos

aPrincipal := { 1, 2, 3 }
Multidimensional é.... uma lista de listas.

Código: Selecionar todos

aPrincipal := { L1, L2, L3 }
Quer adicionar um elemento em cada uma das listas
AEval vai processar cada uma das listas

Código: Selecionar todos

AEval( aPrincipal, { | e | AAdd( e, 4 ) } )
É isso?

Ou vai adicionar uma lista nova?

Código: Selecionar todos

AAdd( aPrincipal, { 1, 2, 3 } )
O AIns() é pra INSERIR em outra posição que não seja a última
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionando uma coluna em um vetor bidimensional

Mensagem por asimoes »

Quintas,

A ideia é adicionar uma coluna nova a um vetor existente por exemplo:

aVetor := {{1, 2, 3}}

Como incluir o valor 4 na mesma linha nesse vetor? onde esse vetor passaria a ter:

aVetor := 1,2,3,4
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionando uma coluna em um vetor bidimensional

Mensagem por asimoes »

Isso eu consegui fazer com HashTable, as keys "MARCADO" e "DESTINO" foram adicionadas na HT ::hOpsTela

Código: Selecionar todos

aEval( ::hOpsTela, { | e | e[ "MARCADO" ] := .F., e[ "DESTINO" ] := 1 } )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Adicionando uma coluna em um vetor bidimensional

Mensagem por JoséQuintas »

Tem que pensar no seguinte também: como vai fazer o teste depois?
if array[ x, 4 ] ? nesse caso SEMPRE precisa existir o 4.
Talvez melhor incluir tudo antes, com .F. de não marcado, e só alterar durante o uso.

Lembrando que a diferença entre hash e array, é que um usa nome, e outro número.

Código: Selecionar todos

AEval( aList, { | e |  e[ 4 ] := .F., e[ 5 ] := 1 } )
que pode ficar parecido se usar:

Código: Selecionar todos

#define A_MARCADO 4
#define A_DESTINO 5
AEval[ aList, { | e | e[ A_MARCADO ] := .F., e[ A_DESTINO ] := 1 } )
Se a análise facilitar acrescentando sempre os dois campos, adiciona tudo no início como default.
Caso contrário, vai precisar checagem de Len(), pra ver se precisa fazer o AAdd()

Código: Selecionar todos

AEval( aList, { | e | iif( Len( e ) < 4, AAdd( e, .F. ),NIL), iif( Len( e ) < 5, AAdd( e, 0 ),NIL), e[ 4 ] := .F., e[ 5 ] := 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Adicionando uma coluna em um vetor bidimensional

Mensagem por JoséQuintas »

Pra não complicar depois, mais fácil criar já com tudo:

Código: Selecionar todos

aList := { 1, 2, 3, .F., 0 }
Ou fazer o AEval() pra adicionar as duas colunas com default.
Senão, toda vez que for analisar vai precisar testar se existem os campos.

Essa é outra diferença do HASH ARRAY: se usar algo que não existe, ele cria automático, já no array dá erro se não existir e[ 4 ] por exemplo.
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/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionando uma coluna em um vetor bidimensional

Mensagem por asimoes »

Quintas,

Isso resolveu, usando o próprio E, dessa forma a lista é refeita adicionado a nova coluna

Código: Selecionar todos

aEval( aVetor, { | e,n | aAdd( e, "" ) } )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder