Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gigi59

programa pra unir dois vetores

Recommended Posts

programa que le dois vetores e apresenta a uniao dos vetores num terceiro vetor, sem repeticao, cada numero pode aparcer uma unica vez no resultado.

alguem pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom você le os vetores certo?

dai você joga TODOS os dados do primeiro vetor no terceiro vetor, ai você começa o tratamento, você compara os elementos do vetorB com os do vetorA se existir compara o proximo se naum existir adiciona ele no vetorC e incrementa o indice do vetorC!

 

tente fazer com base no q te falei e va postando as duvidas decorrentes!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

dai você joga TODOS os dados do primeiro vetor no terceiro vetor

esse terceiro vetor, seria o vetorC ?? se sim, pq fazer isso?

 

Devo fazer o tratamento antes ou depois da união dos vetores??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque a uniao vai ter no minimo min{|V_a|,|V_b|} elementos e no máximo |V_a|+|V_b| elementos. Como você espera que 21 elementos caibam num espaco pra 20? Ainda mais se for alocado estaticamente...

 

O tratamento você faz antes da união (depois que colocou o valor lá não tem sentido)

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu intedi que você tem q comparar o vA com o vB, antes da união, mas pq jogar os valores de vA no terceiro vetor ?? não intendi se seria um novo vetor esse terceiro vetor ou é o vetorC (fórum burro, corrigi v C para você ??), que fará a união nesse caso

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom falei isso c no vetorA naum tiver valores repetidos!

vo fazer um teste de mesa simples pra você entender:

 

VetorA = {1,10,15,99,52}

VetorB = {2,6,11,52,37}

Pronto temos os 2 vetores = VetorA e VetorB

antes de td devemos pensar entaum q c kd vetor tem capacidade de 5 elementos o VetorC entaum tera capacidade de 5+5=10 correto?

entaum vow começar a transferencia de valores dos vetores, jogo TODOS elementos do VetorA no VetorC:

VetorC = {1,10,15,99,52}

pronto dados inseridos, agora tenho q ver o tratamento q irei fazer para armazenar os dados do VetorB no vetorC, farei o seguinte pegarei um dado do VetorB e verificarei se ele existe ow no VetorA ou no VetorC assim:

pego o dado '2'.. comparo com kd cado do VetorC e vejo q ele naum existe ainda ai eu incremento o indice do vetorC e pronto elemento adicionado, o VetorC entaum fica assim:

VetorC = {1,10,15,99,52,2}

ai é soh você ir fazendo isso até terminar a verificação de todos os elementos do VetorB!

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

obs:confesso q naum sow nd didático + acho q da pra ter uma noçaum do q eu falei!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh agora intendi o pq de jogar todos os valores do vetorA no vetorC...

mas uma parte complicada é esse varredura tb, teria que fazer:

vetorB[0] -> vetorC[0]

vetorB[0] -> vetorC[1]

vetorB[0] -> vetorC[2]

 

vetorB[1] -> vetorC[0]

vetorB[1] -> vetorC[1]

vetorB[1] -> vetorC[2]

 

e assim por diante, teria que usar quantos "Para" nesse caso ?? Pode dar uma idéia ?? vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom você usou o sinalzinho errado você teria q compará-los com os outros elementos, bom isso realmente é necessario para manter q naum haverá duplicados!

assim faz tempo q naum vejo sobre algoritmos de busca, de uma buscada no google e veja lah, kd um tem uma lógica diferente + chegam a um msm resultado!

pq tipo no laço você tem q fazer algo assim:

Para i de 0 até MAX-1 faça
   aux <- 0;
	Para j de 0 até MAX-1 faça
		Se vetorB[i] != vetorA[j] então
			aux++;
		fim_se
	Fim_para
	se (aux == MAX) então
			vetorC[<MAX>++] <- vetorB[i];
	fim_se
Fim_para

Nossa c alguem quiser postar uma lógica diferente pq to com um sono entaum naum quis pensar muito :lol:

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, acho que fiz alguma coisa errada...pois meu "para" tava igual esse, soh nao intedi o "se", se algum vetor for diferente, aux não vai ser igual ao MAX, e assim não adicionará nada no vetorC ??

 

se (aux == MAX) então
	vetorC[<MAX>++] <- vetorB[i];
fim_se

Compartilhar este post


Link para o post
Compartilhar em outros sites
se algum vetor for diferente, aux não vai ser igual ao MAX, e assim não adicionará nada no vetorC ??

 

 

Nao.Se o elemento de vA nao for igual ao indexado em vB, aux é incrementado. Se chegar no final do laco e aux for < MAX entao existe um elemento de vA em vB.

 

k <- 0;
Para i de 0 até MAX-1 faça
Para j de 0 até MAX-1 faça
	Se vetorB[i] == vetorA[j] então
		interrompa
	fim_se
Fim_para
se (j == MAX) então
		vetorC[k] <- vetorB[i];
		k++;
fim_se
Fim_para

 

 

Não entendi o que você esta fazendo com MAX. Se você incrementa o máximo,nunca vai chegar no final do array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi o que você esta fazendo com MAX. Se você incrementa o máximo,nunca vai chegar no final do array.

isso é pra mim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.