Exercicio de conjuntos

6 respostas
rodrigoerocha

Fiz este exercício, porem esta apresentando alguns erros.

  1. Faça um programa que leia dois vetores Q e R com 12 e 20 elementos inteiros (valores repetidos ou não) respectivamente e, determine o vetor W, onde W = Q ∩ R. Ao final, o programa deve mostrar o vetor W obtido, lembrando que ele não pode ter elementos repetidos.
import java.util.Scanner;
public class Exercicio6 {
	public static void main(String[] args) {
		int[] q = new int [2];
		int[] r = new int [10];
		int[] w = new int [2];
		Scanner leitura = new Scanner(System.in);
		System.out.println("Digite os valores do conjunto Q");
		for (int i = 0; i < q.length; i++){
			System.out.println("Digite o valor");
			q[i] = leitura.nextInt();
		}
		System.out.println("Digite os valores do conjunto R");
		for (int i = 0; i < r.length; i++){
			System.out.println("Digite o valor");
			r[i] = leitura.nextInt();
		}
		for (int i = 0; i < q.length; i++){
			
			for (int f = 0; f < r.length; f++){
				if (q[i] == r[f]){
					w[f] = q[i];					
				}
			}
			
		}
		System.out.println("Valores do conjunto W");
		for (int i = 0; i < w.length; i++){
			System.out.print(w[i]);
			System.out.print(" ");
		}
	}
}

Alguem pode ajudar… ???

6 Respostas

rodrigoerocha

Alguem ???

sergiotaborda

rodrigoerocha:
Fiz este exercício, porem esta apresentando alguns erros.

  1. Faça um programa que leia dois vetores Q e R com 12 e 20 elementos inteiros (valores repetidos ou não) respectivamente e, determine o vetor W, onde W = Q ∩ R. Ao final, o programa deve mostrar o vetor W obtido, lembrando que ele não pode ter elementos repetidos.

Alguem pode ajudar… ???

Usar arrays é um porre, mas como o enunciaod diz “dois vetores” então pode usar Vector :twisted:

Vector q = new Vector();
Vector r = new Vector();

// codigo semelhante ao seu para iniciar os vectores... 

 q.retainAll(r); // a mantem apenas os elementos comuns a Q e R ou seja, W

return q; // o mesmo que w
rodrigoerocha

Desculpe a ignorância…

não intendi ainda

rs

sergiotaborda
rodrigoerocha:
Desculpe a ignorância....

não intendi ainda

rs

import java.util.Scanner;
public class Exercicio6 {
	public static void main(String[] args) {

                final int qCount = 12;
                final int rCount = 20;
                Vector<Integer> q = new Vector<Integer>();
                Vector<Integer> r = new Vector<Integer>();

		Scanner leitura = new Scanner(System.in);
		System.out.println("Digite os valores do conjunto Q");
		for (int i = 0; i < qCount ; i++){
			System.out.println("Digite o valor");
			q.add(leitura.nextInt());
		}
		System.out.println("Digite os valores do conjunto R");
		for (int i = 0; i < rCount ; i++){
			System.out.println("Digite o valor");
			r.add(leitura.nextInt());
		}

               // intesecta
               q.retainAll(r);


		System.out.println("Valores do conjunto W");
		for (int i = 0; i < q.length; i++){
			System.out.print(q.get(i));
			System.out.print(" ");
		}
	}
}

Estou usando vector por causa do enunciado que diz "leia dois vetores" e eu não quero usar array.
É claro que é um subterfugio, mas funciona.
O ideal é usar List ( com ArrayList), ou melhor ainda Set(com TreeSet). Mas com Set temos que ter mais cuidado no loop e é chato tb.

rodrigoerocha

Fiz aqui e ainda apresenta erro na hora de imprimir o resultado

import java.util.Scanner; import java.util.Vector; public class Ex { public static void main(String[] args) { final int qCount = 12; final int rCount = 20; Vector<Integer> q = new Vector<Integer>(); Vector<Integer> r = new Vector<Integer>(); Scanner leitura = new Scanner(System.in); System.out.println("Digite os valores do conjunto Q"); for (int i = 0; i < qCount ; i++){ System.out.println("Digite o valor"); q.add(leitura.nextInt()); } System.out.println("Digite os valores do conjunto R"); for (int i = 0; i < rCount ; i++){ System.out.println("Digite o valor"); r.add(leitura.nextInt()); } // intesecta q.retainAll(r); System.out.println("Valores do conjunto W"); for (int i = 0; i < qCount; i++){ System.out.print(q.get(i)); System.out.print(" "); } } }

rodrigoerocha

consegui resolver aqui;

valew

import java.util.Scanner;
public class Exercicio6 {
	public static void main(String[] args) {
		int[] q = new int [12];
		int[] r = new int [20];
		int[] w = new int [12];
		boolean existe;
		int contW = 0;
		Scanner leitura = new Scanner(System.in);
		System.out.println("Digite os valores do conjunto Q");
		for (int i = 0; i < q.length; i++){
			System.out.println("Digite o valor");
			q[i] = leitura.nextInt();
		}
		System.out.println("Digite os valores do conjunto R");
		for (int i = 0; i < r.length; i++){
			System.out.println("Digite o valor");
			r[i] = leitura.nextInt();
		}
		
		for (int i = 0; i < q.length; i++){ //interseção
			for (int j = 0; j < r.length; j++){
				if (q[i] == r[j]){
					//verifica se o elemento esta em W
					existe = false;
					for (int k = 0; k < contW; k++){
						if (w[k] == q[i]){
							existe = true;
						}
					}
					if (existe == false){
						w[contW] = q[i];
						contW++;
					}
				}
			}
		}
		if (contW > 0){
			System.out.println("Valores do conjunto W");
			for (int i = 0; i < contW; i++){
				System.out.print(w[i]);
				System.out.print(" ");
			}			
		} else {
			System.out.println("Não existe interseção");
		}
	}
}
Criado 24 de agosto de 2008
Ultima resposta 25 de ago. de 2008
Respostas 6
Participantes 2