Fala Gustavo,
quanto ao recuo eu não me preocupo porque se eu colocar um espaço em branco
onde ele são iguais já serve pq automaticamente ele pula de coluna
no relatorio onde tiver um espaço em branco. Entao ele acaba fazendo o recuo
automaticamente.
Eu me preocupo com a situação abaixo onde o UN de teste deve ser impresso no
último caso, portanto acredito que o melhor é tentar
pegar o prefixo inteiro da lista e comparar.
Empresa de Teste | Diretoria de teste | UN de teste | UR de teste |
teste
Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 |
teste 2
Empresa de Teste 2 | Diretoria de teste 2 | UN de teste | UR de teste 2 |
teste 2
Empresa de Teste
Diretoria de teste
UN de teste
UR de teste
teste
UR de teste 2
teste 2
Empresa de Teste 2
Diretoria de teste 2
UN de teste
UR de teste 2
teste 2
A estrutura do ArrayList de Entrada que eu estou usando é a mesma
ArrayzaoList[3]
[0] ArrayList com empresa, diretoria, un de teste, ur de teste, centro de
custo.
[1] ArrayList com empresa, diretoria, un de teste, ur de teste, centro de
custo.
[2] ArrayList com empresa, diretoria, un de teste, ur de teste, centro de
custo.
Então, para fazer a impressao, dado o que tu me disse eu pensei em fazer da
seguinte forma:
Cont = numero_de_camadas_existente (que é 5 para este ex)
ArrayList novaLista = new ArrayList(); //contem a nova lista
int i = 0;
int guardaQtosIguais = 0;
int primeiroElementoDeveSerImpresso = 0;
ArrayList guarda;
while (i != Cont) {
guarda = new ArrayList(); //zera o guarda
for (cada ARRAYLIST da grande lista de arrays de entrada) {
primeiroElementoDeveSerImpresso++;
for (cada elemento do ARRAYLIST) {
guarda.Add(elemento);
}
Se (primeiroElementoDeveSerImpresso==1) novaLista.Add(guarda);
guardaQtosIguais = 0;
for (j=0; j<i; j++) {
Se (guarda[j] == ARRAYLIST[j]) {
temElemento = true;
guardaQtosIguais++;
} else { temElemento = false; }
}
Se (temElemento == true) {
ArrayList novoElementoDaListComEspacoEmBranco = new ArrayList();
int j = 0;
for (cada elemento do ARRAYLIST) {
Se (j<guardaQtosIguais) {
novoElementoDaListComEspacoEmBranco.Add("");
j++;
}
else {
novoElementoDaListComEspacoEmBranco.Add(elemento);
j++;
}
}
novaLista.Add(ARRAYLIST);
}
}
i++;
}
Já detectei alguns problemas onde ele pode contar uma camada superior só
porque é igual e daria problema, vou ver isso agora.
Se tu puderes me indicar se é mais ou menos por ae agradeço.
Mais uma vez obrigado pela ajudar Gustavo.
Abraços.
Higor
Em 4 de agosto de 2010 21:07, Gustavo <[email protected]> escreveu:
> Acho que neste caso a ideia é pegar o primeiro elemento de uma lista e
> coletar todas as listas que têm aquele mesmo elemento como o primeiro
> elemento, e removendo este elemento de cada uma delas. Depois aplica a de
> forma recursiva para esta lista coletada.
>
> Você poderia colocar a impressão dos elementos usando essa mesma função,
> mas daí também vai tem que passar como parâmetro o recuo necessário para
> imprimir os elementos sempre que trocar de linha.
>
> Na verdade acho que usando essa ideia nem precisaria do algoritmo anterior,
> bastando não imprimir as listas que, após a recursão, ficam vazias, mas você
> pode manter o algoritmo anterior por simplicidade.
>
> Em 4 de agosto de 2010 20:30, Higor <[email protected]> escreveu:
>
> Fala Gustavo,
>> puuuxaaa como posso lhe agradecer? Funcionou de forma perfeita. Bem melhor
>> que a minha estrutura anterior.
>> Ele realmente retornou um array com os dois arrays dentro de um array com
>> a estrutura:
>>
>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste | teste
>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 |
>> teste 2
>>
>> Porém, eu preciso exibir da seguinte forma:
>>
>>
>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste | teste
>>
>> UR de teste 2 | teste 2
>>
>> Ou seja, qdo os campos se repetirem eu preciso colocar um espaço em branco
>> entre eles.
>>
>> Minha ideia é ordenar esse ArrayList de forma que os parecidos estejam
>> proximos e
>> troca-los por espaço em branco.
>>
>> Não sei se ele consegue ordenar o array desse jeito (colocando todas
>> proximas uma das outras)
>> acho que preciso mudar um pouco a estrutura. Vou dar uma testada nessa
>> ordenacao. Depois
>> possivelmente terei que comparar-los pra ver se sao iguais.
>>
>> Se alguem tiver uma dica eu agradeço.
>>
>> Mais uma vez obrigado Mario e Gustavo pela ajuda.
>>
>> Abraços.
>> Higor
>>
>>
>> Em 4 de agosto de 2010 17:13, Gustavo <[email protected]> escreveu:
>>
>> Olá, Higor,
>>>
>>> Que tal o seguinte: Chamemos a lista dada de ENTRADA e comece com SAIDA
>>> sendo uma lista vazia. ENTRADA então é uma lista de listas.
>>>
>>> Fixe uma lista ENT da ENTRADA, verifique se ela é sublista de alguma
>>> lista da SAIDA. Se não for, verifique se alguma lista SAI da SAIDA é
>>> sublista de ENT, se for remova a lista SAI da SAIDA e, ao final, coloque ENT
>>> na SAIDA.
>>>
>>> Modificando um pouco, fica assim:
>>>
>>> 1 - Para cada lista ENT pertencente a ENTRADA faça
>>> 2 - Seja PERTENCE <- FALSO
>>> 3 - Para cada lista SAI pertencente a SAIDA faça
>>> 4 - Se ENT é sublista de SAI então
>>> 4.1 - PERTENCE <- VERDADEIRO
>>> 4.2 - finalize o loop 3 (isto é, vá para 6)
>>> 5 - Se SAI é sublista de ENT então
>>> 5.1 - remova SAI de SAIDA
>>> 5.2 - finalize o loop 3 (neste caso não precisa verificar o resto
>>> da lista SAIDA)
>>> 6 - Se PERTENCE = FALSO coloque ENT em SAIDA (senão chupe o dedo :P)
>>> 7 - retorne SAIDA
>>>
>>> Gustavo.
>>>
>>> Em 4 de agosto de 2010 16:41, Higor <[email protected]> escreveu:
>>>
>>>>
>>>> Olá Pessoal,
>>>> estou com um problema gigantesco aqui. Tendo a estrutura abaixo (Um List
>>>> com cada um dos elementos com um campo
>>>> CamadaSuperior que indica o seu superior):
>>>>
>>>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste
>>>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste |
>>>> teste
>>>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2
>>>> Empresa de Teste |
>>>> Empresa de Teste | Diretoria de teste
>>>> Empresa de Teste | Diretoria de teste | UN de teste
>>>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 |
>>>> teste 2
>>>>
>>>> Assim acima tem-se uma List com 7 elementos e seus camadas superiores
>>>> (Ex: teste2 tem como camada superior
>>>> "UR de teste 2" que tem como camada superior "UN de teste").
>>>>
>>>> Veja que um algoritmo anterior (que montou essa estrutura) percorre um
>>>> banco de dados e vai da camada x até a camada y.
>>>> Ou seja, pode-se ver, da esquerda para direita, que sempre vamos até a
>>>> camada mais externa que é a empresa.
>>>>
>>>> Preciso fazer um algoritmo que nao replique as estruturas, assim seria
>>>> exibido apenas:
>>>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste |
>>>> teste
>>>> Empresa de Teste | Diretoria de teste | UN de teste | UR de teste 2 |
>>>> teste 2
>>>>
>>>> Fiz um algoritmo mas ficou extremamente complexo muito dificil de
>>>> manter, alguem tem uma sugestao por favor?
>>>>
>>>> Agora pouco pensei em fazer uma List que armazene-os e tive as réplicas,
>>>> mas ainda nao fiz o algoritmo.
>>>>
>>>> Por favor dêem uma luz ai pessoal.
>>>>
>>>> Abraços.
>>>> Higor
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Lisp-br" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<lisp-br%[email protected]>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/lisp-br?hl=en.
>>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Lisp-br" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<lisp-br%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/lisp-br?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Lisp-br" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<lisp-br%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/lisp-br?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lisp-br" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<lisp-br%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/lisp-br?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"Lisp-br" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/lisp-br?hl=en.