Ir para conteúdo

Arquivado

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

vagnner

Algoritmo/Java - Exercício de Conjuntos

Recommended Posts

Eaew pessoal! To postando esse topico para ver se vocês me dão um empurraozinho pra eu resolver essa questão... Embora eu seja estudante iniciante de Programação e ainda ache que seja uma coisa bem minima e eu não estou notando, sem falar na correria e estresse que eu ando, sem tempo nem pra raciocinaer direito... mas enfim..

Eu to construindo um Java Aplication que segue proposto problema:[/font][/font]

 

Por armazenar elementos de um mesmo tipo numa única área de memória, um Array Unidimensional em Java é uma boa opção para uma estrutura de dados que represente um conjunto da Teoria de Conjuntos da matemática. No estudo dos conjuntos admitem-se os seguintes conceitos primitivos:

-Conjunto: representa uma coleção de objetos.

-Elemento: é um dos componentes de um conjunto.

-Pertinência: é a característica associada a um elemento que faz parte de um conjunto.

E dentre as operações mais comuns entre conjuntos estão:

 

-A reunião dos conjuntos A e B: é o conjunto de todos os elementos que pertencem ao conjunto A ou ao conjunto B.

-A interseção dos conjuntos A e B: é o conjunto de todos os elementos que pertencem ao conjunto A e ao conjunto B.

-A diferença entre os conjuntos A e B: é o conjunto de todos os elementos que pertencem ao conjunto A e não pertencem ao conjunto B.

Sabendo que pela teoria dos conjuntos os elementos de um conjunto não se repetem, pede-se: implementar um Java Application que leia dois Arrays de caracteres representando dois conjuntos, e realize as seguintes operações:

 

A unido B = { x: x A ou x B } pertence a A ou a B

A inter B = { x: x A e x B } pertence a A e B

A-B = {x: x A e x B} pertence a A e não a B

 

Minha lógica ta paia, pois não tô conseguindo associar os contadores afim de que possa obter principalmente a operação União.

Eu vou tar postando o rabisco que eu fiz e se vocês puderem me ajudar, agradeço![/font]

Compartilhar este post


Link para o post
Compartilhar em outros sites

java.import.util

 

public static void main (string []args){

char [] conjuntoA=new char [5];

char [] conjuntoB=new char [5];

 

//lendo elementos de A e B

Scanner leia= new scanner (system.in);

sysout (“informe os elementos do conjunto A”);

For (int i=0; i<conjuntoA.lenght;i++){

conjuntoA= leia.next().charAt(0);

}

sysout (“informe os elementos do conjunto B”);

ConjuntoB= leia.next().charAt(0);

 

//testando elementos de A correndo em B.

// os elementos de A em comum com B formam a interseção

for (int j=1;j<conjuntoB.lenght;j++){

if (conjuntoA==conjuntoB[j]){

String interseção=interseção+(conjuntoA);

// quando elementos de A são diferentes dos elementos de B, dá-se a diferença de A em B [A-B]

}else

String diferença=diferença+(conjuntoA);

}

//para fazer a união, consegue- se a diferença de B em A [B-A], chamado de diferençaB, nesse caso, junta-se a interseção, a diferença de A em B e a diferença de B em A

if (conjuntoB[j]<>interseção && diferença{

StringdiferençaB=diferençaB+conjuntob[j]

String união=interseção+diferença+diferençaB;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o seu exercício puder ser resolvido utilizando coleções, HashSet poderá ajudá-lo muito conforme já lhe foi indicado no tópico anterior. HashSet não deixará que incluas objetos repetidos no conjunto. Caso contrário, recomendo que comece criando uma matriz de objetos Char, e não de tipos primitivos char. No momento de fazer união você poderá utilizar o método equals do objeto Char pra saber se ele já existe na terceira matriz.

 

PS: Lembre-se que Java é sensitivo ao caso, For é diferente de for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comecemos assim:

No seu programa você terá dois conjuntos; A e B. Declare como variáveis globais.

private Char[] A;
private Char[] B;

Defina um limite para os conjuntos.

A = new Char[10];
B = new Char[10];

Cria-se um método para leitura dos valores de conjunto A e B.

private void recebeValores() {

}

Cria-se um método para fazer a união dos conjuntos A e B.

private Char[] uniao() {
   Char[] uniao = new Char[A.lengh];
   // lógica da união aqui
   return uniao;
}

Cria-se um método para fazer a intercessão dos conjuntos A e B.

private Char[] intercessao() {
   Char[] intercessao = new Char[A.lengh];
   // lógica da intercessão aqui
   return intercessao;
}

Testando a aplicação.

public class App {

   public App() { }

   // Insira todos aqueles códigos listados acima aqui
   public static void main(String[] args) {
      App app = new App();
      app.recebeValores();
      Char[] uniao = app.uniao();
      for(Char elemento : uniao) {
         System.out.println(elemento);
      }

      // E por aí vai...
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Postei o q fiz e mesmo assim n ajudou... Sou iniciante... ainda n conheco HashSet.

 

Esquece o HashSet. Ele te ajudaria muito, mas o exercício pede claramente array.

O Vergil te mostrou o caminho, agora é só tentar fazer e surgindo dúvidas poste para ajudarmos.

 

 

Só uma coisinha no código do vergil. O tamanho máximo da interseção será o tamanho do conjunto menor que pode ser A.lengh, mas a união pode ser até a soma de A.lengh + B.lengh.

ou seja, aqui seria:

 

Char[] uniao = new Char[A.lengh + B.lengh];

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

Só uma coisinha no código do vergil. O tamanho máximo da interseção será o tamanho do conjunto menor que pode ser A.lengh, mas a união pode ser até a soma de A.lengh + B.lengh.

ou seja, aqui seria:

 

Char[] uniao = new Char[A.lengh + B.lengh];
Perfeito! http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Bem lembrado. Isso poderia causar uma ArrayIndexOutOfBoundary que poderia dar grandes dores de cabeça pra quem está começando. Algum moderador corrija o código por favor. E também meu errinho básico de Português. Interseção (o correto neste caso) e intercessão são palavras distintas.http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algum moderador corrija o código por favor. E também meu errinho básico de Português. Interseção (o correto neste caso) e intercessão são palavras distintas.http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

 

Eu pensei que fosse possível edição do tópico pelo próprio criador, mas também não consigo editar os meus. Estou desatualizado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ocorreu uma alteração e os membros só podem editar seus posts em até 30 minutos após a postagem

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.