Clipper On Line • Ver Tópico - Adicionando uma coluna em um vetor bidimensional

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

 

Adicionando uma coluna em um vetor bidimensional

Mensagempor asimoes » 17 Set 2020 11:28

Usando aEval e Hb_aIns, usado para adicionar em vetor bidimensional

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4738
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 321 vezes
Mens.Curtidas: 226 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor asimoes » 17 Set 2020 11:55

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4738
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 321 vezes
Mens.Curtidas: 226 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor JoséQuintas » 17 Set 2020 12:03

Analise com calma.

Vetores são listas.
aPrincipal := { 1, 2, 3 }


Multidimensional é.... uma lista de listas.

aPrincipal := { L1, L2, L3 }


Quer adicionar um elemento em cada uma das listas
AEval vai processar cada uma das listas

AEval( aPrincipal, { | e | AAdd( e, 4 ) } )


É isso?

Ou vai adicionar uma lista nova?

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.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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor asimoes » 17 Set 2020 12:49

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4738
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 321 vezes
Mens.Curtidas: 226 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor asimoes » 17 Set 2020 13:52

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

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4738
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 321 vezes
Mens.Curtidas: 226 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor JoséQuintas » 17 Set 2020 14:39

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.

AEval( aList, { | e |  e[ 4 ] := .F., e[ 5 ] := 1 } )


que pode ficar parecido se usar:

#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()

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.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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor JoséQuintas » 17 Set 2020 15:04

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

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.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: 14703
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 867 vezes

Adicionando uma coluna em um vetor bidimensional

Mensagempor asimoes » 17 Set 2020 16:29

Quintas,

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

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4738
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 321 vezes
Mens.Curtidas: 226 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 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