gigi59 0 Denunciar post Postado Maio 30, 2008 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
quitZAUMMM 18 Denunciar post Postado Maio 30, 2008 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
gRoOvE 0 Denunciar post Postado Junho 1, 2008 quitZAUMMM disse: 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
_Isis_ 202 Denunciar post Postado Junho 1, 2008 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
gRoOvE 0 Denunciar post Postado Junho 1, 2008 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
quitZAUMMM 18 Denunciar post Postado Junho 2, 2008 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
gRoOvE 0 Denunciar post Postado Junho 2, 2008 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
quitZAUMMM 18 Denunciar post Postado Junho 3, 2008 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
gRoOvE 0 Denunciar post Postado Junho 3, 2008 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 ?? quitZAUMMM disse: se (aux == MAX) então vetorC[<MAX>++] <- vetorB[i]; fim_se Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 3, 2008 Citar 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
quitZAUMMM 18 Denunciar post Postado Junho 4, 2008 Citar 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