Página 1 de 1

Vetor multidimensional

Enviado: 05 Nov 2009 09:48
por fxavierds
Galera como trabalho com vetor multidimensional em clipper?

Algo assim
aVet := {"1","2","3","4"}
aVet[1][1] := {"A","B"}

Como faço isso usando AADD e ASCAN pra pesquisar para não inserir um item duas vezes?

Re: Vetor multidimensional

Enviado: 05 Nov 2009 09:58
por sygecom
Buenas,

Código: Selecionar todos

aVet := {}
AADD(aVet,{"A","B"})

IF AScan( aVet, {|a| a[2] = "B" } )=0
   Alert("Nao Achou, vai adicionar")
   AADD(aVet,{"A1","B2"})
ENDIF

Re: Vetor multidimensional

Enviado: 05 Nov 2009 10:07
por fxavierds
Cara vlw pela resposta, o problema é q tenho que fazer algo mais complexo, por exemplo

aVetor := {}
Vou procurar se tem algo desses valores
{"1","2","3","4"}

Se não tiver adiciono, até aqui blz
Dai pego um campo assim: "A/B/C"
E procuro se existe A, se não existir adiciono AADD(aVetor[1],"A") então ficaria aVetor[1][1] = "A" correto?
Dai procuro se B existe em aVetor[1][1] se não adiciono B como iten do indice onde está A, entendeu?

Re: Vetor multidimensional

Enviado: 05 Nov 2009 11:23
por gvc
Explique melhor, por favor.

Re: Vetor multidimensional

Enviado: 05 Nov 2009 14:04
por fxavierds
cara é como se fosse uma arvore...

um indice do array pode ter 0 ou N subitens...e assim sucessivamente...

Re: Vetor multidimensional

Enviado: 05 Nov 2009 17:18
por alxsts
Olá!

Dê uma olhada neste tópico, por você iniciado em 17-09-2009 ou neste tópico. Ambos contem exemplos de código que com certeza vão te ajudar...

Re: Vetor multidimensional

Enviado: 05 Nov 2009 17:31
por sygecom
Olá fxavierds,
Tente falar um pouco mais o que você deseja, eu particularmente não entendi o que você deseja !

Re: Vetor multidimensional

Enviado: 05 Nov 2009 17:57
por gvc
O sistema de array não é indicado para trabalhar com arvore binária.
Se vc exemplificar o que quer, talvez seja possível achar alguma forma de resolver.
O sistema de indexação do Clipper é BTree+. Talvez seja melhor pensar em usar arquivo indexado do que o array.

Re: Vetor multidimensional

Enviado: 05 Nov 2009 18:54
por fxavierds
Aceito sugestoes...tudo q quero é construir uma arvore
se me ajudarem com isso já serve...
imagine que tenho uma tabela com um campo preenchido assim:

Registro 1: A/B/C
Registro 2: A/
Registro 3: B/C
.
.
.
Registro N: ?/?

Tenho q pegar esses valores e gerar uma arvore, os primeiros caracteres antes da "/" seram os primeiros nós, o segundos os seguintes e ai vai..

Re: Vetor multidimensional

Enviado: 05 Nov 2009 23:32
por Toledo
Desta maneira como você quer fazer acho que vai ser difícil, o que você poderia fazer é o seguinte:

Código: Selecionar todos

Priv aVet:= {}
cLetra:="A"
AADD_(cLetra)
cLetra:="B"
AADD_(cLetra)
cLetra:="C"
AADD_(cLetra)
cLetra:="A"
AADD_(cLetra)
cLetra:="B"
AADD_(cLetra)
cLetra:="C"
AADD_(cLetra)

Código: Selecionar todos

Func AADD_(cLetra)
Local nQta:=LEN(aVet)
IF nQta=0
  AADD(aVet,{cLetra,"",""})
ELSE
  FOR i=1 TO 3
    IF aVet[nQta,i]!=cLetra
     IF EMPT(aVet[nQta,i])
      aVet[nQta,i]:=cLetra
     ELSE
      IF i=3
        AADD(aVet,{cLetra,"",""})
      ENDIF
     ENDIF
   ELSE
     AADD(aVet,{cLetra,"",""})
     EXIT
   ENDIF
  NEXT
ENDIF
Retu Nil
Acho que vai funcionar.

Abraços,