Comparar 2 vetores em estrutura de dados

20 respostas
B
como exibir deste vetor somente os numeros nao repetidos exibindo 6 e 4, obrigado. 


   public static boolean s(int vetor[], int valor){
        for(int i : vetor){
         if(i == valor) 
            return true;   
    }   
    return false;   
        
    }
            
    public static void main(String[] args) {
        // TODO code application logic here
        
        int [] vetA = new int[3];
        int [] vetB = new int[3];
        int [] vetC = new int[6];
        
        vetA[0] = 5;
        vetA[1] = 6;
        vetA[2] = 7;
        
        vetB[0] = 5;
        vetB[1] = 4;
        vetB[2] = 7;
        
        int aux;

        
        for(int i=0; i<vetA.length; i++){
            for(int j=0; j<vetB.length; j++){
                if(vetA != vetB){
                    vetC[i] = vetA[i];  
                } 
            }
        }
                
        for(int i : vetC){
        System.out.print(i);
        }

20 Respostas

Rodrigo_Sasaki

por favor use as tags [ code][ /code] quando for postar código, fica muito mais legível.

Quando você faz isso: if(vetA != vetB) Você está comparando a variável de referência ao vetor, e não o valor contido no índice do vetor, que é o que você quer comparar.

Arrume isso e analise seu código novamente, ele ainda não estará correto, veja se você encontra o problema.

B

quero mostrar somente os valores nao repetidos dos 2 vetores

Rodrigo_Sasaki

Amigo, por favor, não crie tópicos duplicados, você nem respondeu o post dos colegas nos outros dois tópicos iguais a esse.


Rodrigo_Sasaki

Eu entendi o que você quer, e a minha sugestão foi coerente.

O seu algoritmo está comparando os vetores de maneira incorreta, levando em consideração o resultado que você quer.

Eu te ajudo a chegar no resultado que você quer se você colaborar e trabalhar também, porém não vou te dar o código pronto.

B

claro esta certo, a outra pessoa me ajudou mas com metodos prontos, quero aprender na unha

Rodrigo_Sasaki

É isso que eu quero te ajudar a fazer.

Fez a alteração que eu sugeri? Corrigiu a comparação dos arrays?

B

vê se esta certo o que entendi ali eu estou comparando dois vetores mas não seus indices e estou fazendo um terceiro vetor receber o valor diferente do vetor B, mas como comparo pelo seus indices

Rodrigo_Sasaki

Da mesma maneira que faz para acessar o índice: if(vetA[i] != vetB[i] Perceba também que isso só é valido porque você está usando tipos primitivos, caso estivesse comparando objetos, a história seria diferente. Mas não se preocupe com isso agora, corrija o código e veja se encontra o outro problema.

Faça um teste de mesa.

B

if(vetA[i] != vetB[i]){ vetC[i] = vetA[i]; }

certo, estou comparando os indices estou fazendo o c receber a ele esta recebendo somente 6 ate aqui esta correto

Rodrigo_Sasaki

Na verdade como você usa 2 índices, o if fica diferente:if(vetA[i] != vetB[j])

B
if(vetA[i] != vetB[i]){
                    vetC[i] = vetB[i]; 

                }
if(vetA[i] != vetB[i]){
                    vetC[i] = vetA[i]; 

                }

esta tudo correto agora ele esta somente mostrando os valores nao repetidos quando eu faço C receber A ou B, mas agora como mostro no mesmo vetor.

Rodrigo_Sasaki

o índice usado no vetB é o j, não o i.

B

então devo fazer o que agora, só add j ele mostra tudo do 1 vetor

Rodrigo_Sasaki

Faça o teste de mesa, pegue papel e caneta e rode o seu código mentalmente, anote os valores a cada passo, valide cada iteração do laço, cada verificação e cada atribuição.

Fazendo isso com certeza você vai encontrar o problema.

B

devo criar uma variavel auxiliar pq eu acho q AUX deve receber A e depois receber mas onde farei para que ele n pegue os valores repeditos

denisspitfire

o problema meu amigo, de voce “se enrolar” no j ou i… é o seguinte.

Quando voce conta duas coisas diferentes, voce usa duas variaveis diferentes… então voce não pode utilizar como se fossem a mesma contagem depois. Entendeu?

digamos que voce tenha que contar. 5 vezes de 1 a 100.

para contar de 1 a 100 voce pode usar o i.

depois para contar 5 vezes esse algoritmo de contagem de 1 a 100 voce usa o j.

B

mas o problemas esta agora na verificacao de comparar e só pegar os nao repetidos

denisspitfire

então… é uma dica isso. Pense… oque é diferente voce não pode juntar achando que vai continuar funcionando normalmente…

denisspitfire

pq nao ve a apostila da caelum de estrutura de dados?

B

vou dar uma olhada

Criado 27 de agosto de 2012
Ultima resposta 27 de ago. de 2012
Respostas 20
Participantes 3