Pessoa, preciso criar um conjunto união a partir de dois vetores e não estou conseguindo. Confesso que estou com um pouco de dificuldade para transferir os elementos de um array maior para um menor.
import javax.swing.JOptionPane;
public class Exercício6 {
public static void main(String[] args) {
int vetorA[] = new int[5];
int vetorB[] = new int[5];
String numeroA, numeroB;
int valorNumeroA, valorNumeroB, soma = 0;
for (int i = 0; i < vetorA.length; i++) {
numeroA = JOptionPane.showInputDialog("Digite um número para acrescentar no PRIMEIRO vetor");
valorNumeroA = Integer.parseInt(numeroA);
vetorA[i] = valorNumeroA;
}
for (int i = 0; i < vetorB.length; i++) {
numeroB = JOptionPane.showInputDialog("Digite um número para acrescentar no SEGUNDO vetor");
valorNumeroB = Integer.parseInt(numeroB);
vetorB[i] = valorNumeroB;
}
int vetorA[] = new int[soma];
for (int i = 0; i < vetorB.length; i++) {
for (int j = 0; j < vetorA.length; j++) {
for (int k = 0; k < vetorC.length; k++) {
if (vetorB[i] == vetorA[j]) {
soma++;
vetorC[j] = vetorB[i];
}
}
}
}
for (int i = 0; i < vetorC.length; i++) {
System.out.println(vetorC[i]);
}
}
}
Sem o enunciado, fica complicado entender o que você precisa e o que fez.
Enfim, vamos lá.
Esta linha:
Mata o que você tinha armazenaod no vetorA. Creio que seria necessário um t erceiro vetor nesse ponto.
Segundo, soma, neste ponto do código, está com valor 0. Você declara e não altera seu valor, logo, tem um vetor com 0 posições.
Então, você tem 3 fors (eu não entendo por que tudo isso)
E, no terceiro, aparece um
De onde raios saiu o vetorC?
Na verdade o “int vetorA[] = new int[soma];” é “int vetorC[] = new int[soma];”. Errei ao corrigir umas coisas antes de colocar aqui. Mas mesmo assim o código não funciona.
O enunciado é esse: “Escreva um programa que permita o usuário informar dados para dois arrays de inteiros de 5 posições cada um e apresente o conjunto união dos arrays em um terceiro array.
Conjunto união são todos os elementos que existem em ambos os arrays e não se repetem.”
Ah, e não procuro a resposta exata, mas sim uma luz de qual caminho seguir. =)
Bom, veja, o máximo de elementos que podem existir em um conjunto união é o número de elementos do menor vetor (conjunto).
Como ambos possuirão 5 elementos, eu criaria o vetorC com 5 posições, também.
int vetorC[] = new int[5].
Para efetuar as comparações, eu faria apenas 2 laços for.
Então, Darlan, eu tenho dificuldade justamente nisso: se o conjunto união tem menos elementos do que os vetores de origem, o que fazer com o espaço que sobre nesse novo conjunto(vetor)?
Estou no trabalho e não tenho acesso ao Eclipse aqui. Mas chegando em casa vou tentar seguindo essa sua dica e volto aqui. =)
na hora de exibir, verifica se há valor nas “casas”
Então, funciona parcialmente. Porque nas outras posições do array que não possuem um elemento, ele atribui o elemento “0”.
Se eu atribuir vetorA = 1,2,3,4,5 e vetorB = 4,5,6,7,8, ele vai me devolver vetorC = 0,0,0,4,5
Até posso colocar um “If” pra impedir que os zeros apareçam…mas aí fica meio forçado haha
import javax.swing.JOptionPane;
public class Exercício6 {
public static void main(String[] args) {
int vetorA[] = new int[5];
int vetorB[] = new int[5];
int vetorC[] = new int[5];
String numeroA, numeroB;
int valorNumeroA, valorNumeroB;
for (int i = 0; i < vetorA.length; i++) {
numeroA = JOptionPane.showInputDialog("Digite um número para acrescentar no PRIMEIRO vetor");
valorNumeroA = Integer.parseInt(numeroA);
vetorA[i] = valorNumeroA;
}
for (int i = 0; i < vetorB.length; i++) {
numeroB = JOptionPane.showInputDialog("Digite um número para acrescentar no SEGUNDO vetor");
valorNumeroB = Integer.parseInt(numeroB);
vetorB[i] = valorNumeroB;
}
for (int i = 0; i < vetorB.length; i++) {
for (int j = 0; j < vetorA.length; j++) {
if (vetorB[i] == vetorA[j]) {
vetorC[j] = vetorB[i];
}
}
}
for (int i = 0; i < vetorC.length; i++) {
System.out.println(vetorC[i]);
}
}
}
Qual a sua solução para não ser "meio forçado’?
Desculpa, Darlan, não quis dizer que sua solução era forçada. Mas é que eu realmente achava que havia uma maneria de, por exemplo, escolher elementos de um vetor maior e colocar em um vetor menor.
E tem. Desde que você saiba qual o total de elementos que irão compor o vetor menor.
Lembre-se, o vetor é uma estrutura de tamanho limitado. Além disso, você não sabe quantos elementos estão repetidos, por isso, é necessário considerar o pior caso.
Salvo se você quiser implementar uma funcionalidade que, antes de gerar o tal vetor, contabilize os elementos repetidos.