Advertisement
lucast0rres

Lab2 - Versão Final

Apr 7th, 2017
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 14.09 KB | None | 0 0
  1. /**
  2.  * @author Lucas Pereira Torres de Araújo, 384364
  3.  * Universidade Federal do Ceará - Tecnicas de Programacao I, 2017.1
  4.  */
  5.  
  6. public class Lab2 {
  7.  
  8.     public static void main(String[] args) {
  9.  
  10.       //Dez primeiros numeros naturais
  11.       Conjunto n1 = new Conjunto(10);
  12.       n1.inserirValor(0);
  13.       n1.inserirValor(1);
  14.       n1.inserirValor(2);
  15.       n1.inserirValor(3);
  16.       n1.inserirValor(4);
  17.       n1.inserirValor(5);
  18.       n1.inserirValor(6);
  19.       n1.inserirValor(7);
  20.       n1.inserirValor(8);
  21.       n1.inserirValor(9);
  22.  
  23.       //Cinco primeiros numeros pares
  24.       Conjunto n2 = new Conjunto(5);
  25.       n2.inserirValor(2);
  26.       n2.inserirValor(4);
  27.       n2.inserirValor(6);
  28.       n2.inserirValor(8);
  29.       n2.inserirValor(10);
  30.  
  31.       //Cinco primeiros numeros impares
  32.       Conjunto n3 = new Conjunto(5);
  33.       n3.inserirValor(1);
  34.       n3.inserirValor(3);
  35.       n3.inserirValor(5);
  36.       n3.inserirValor(7);
  37.       n3.inserirValor(9);
  38.  
  39.       //Dez primeiros numeros primos
  40.       Conjunto n4 = new Conjunto(10);
  41.       n4.inserirValor(2);
  42.       n4.inserirValor(3);
  43.       n4.inserirValor(5);
  44.       n4.inserirValor(7);
  45.       n4.inserirValor(11);
  46.       n4.inserirValor(13);
  47.       n4.inserirValor(17);
  48.       n4.inserirValor(19);
  49.       n4.inserirValor(23);
  50.       n4.inserirValor(29);
  51.  
  52.       Conjunto p1 = new Conjunto(3);
  53.       p1.inserirValor(1);
  54.       p1.inserirValor(2);
  55.       p1.inserirValor(3);
  56.       Conjunto p2 = new Conjunto(3);
  57.       p2.inserirValor(4);
  58.       p2.inserirValor(5);
  59.       p2.inserirValor(6);
  60.  
  61.       //Imprimo os conjuntos
  62.       System.out.println("Conjunto 1:"); n1.imprimirVetor();
  63.       System.out.println("Conjunto 2:"); n2.imprimirVetor();
  64.       System.out.println("Conjunto 3:"); n3.imprimirVetor();
  65.       System.out.println("Conjunto 4:"); n4.imprimirVetor();
  66.  
  67.       System.out.println("\n--------------- ITEM A ---------------");
  68.         //Se o conjunto 4 E subconjunto de si mesmo
  69.         switch (n4.verificarSubconjunto(n4)) {
  70.             case 1:
  71.                 System.out.println ("E subconjunto de si mesmo.");
  72.                 break;
  73.             case 0:
  74.                 System.out.println ("Nao e subconjunto de si mesmo.");
  75.                 break;
  76.             default:
  77.                 System.out.println ("O subconjunto e maior que o conjunto comparado.");
  78.                 break;
  79.         }
  80.  
  81.       System.out.println("\n--------------- ITEM B ---------------");
  82.       //A pertinencia dos conjuntos 2, 3 e 4 no conjunto 1
  83.       System.out.println("-------------- ITEM B.1 --------------");
  84.       System.out.println ("A pertinencia do conjunto 2 no conjunto 1:");
  85.         switch (n1.verificarSubconjunto(n2)) {
  86.             case 1:
  87.                 System.out.println ("E subconjunto.");
  88.                 break;
  89.             case 0:
  90.                 System.out.println ("Nao e subconjunto.");
  91.                 break;
  92.             default:
  93.                 System.out.println ("O subconjunto e maior que o conjunto comparado.");
  94.                 break;
  95.         }
  96.  
  97.       System.out.println("-------------- ITEM B.2 --------------");
  98.       System.out.println ("A pertinencia do conjunto 3 no conjunto 1:");
  99.         switch (n1.verificarSubconjunto(n3)) {
  100.             case 1:
  101.                 System.out.println ("E subconjunto.");
  102.                 break;
  103.             case 0:
  104.                 System.out.println ("Nao e subconjunto.");
  105.                 break;
  106.             default:
  107.                 System.out.println ("O subconjunto e maior que o conjunto comparado.");
  108.                 break;
  109.         }
  110.  
  111.       System.out.println("-------------- ITEM B.3 --------------");
  112.       System.out.println ("A pertinencia do conjunto 4 no conjunto 1:");
  113.         switch (n1.verificarSubconjunto(n4)) {
  114.             case 1:
  115.                 System.out.println ("E subconjunto.");
  116.                 break;
  117.             case 0:
  118.                 System.out.println ("Nao e subconjunto.");
  119.                 break;
  120.             default:
  121.                 System.out.println ("O subconjunto e maior que o conjunto comparado.");
  122.                 break;
  123.         }
  124.  
  125.       System.out.println("\n--------------- ITEM C ---------------");
  126.       //Se a uniao de 2 e 3 E igual ao conjunto 1;
  127.       Conjunto union = n2.uniaoConjunto(n3);
  128.       System.out.println("Uniao - Conjunto 2 e 3:"); union.imprimirVetor();
  129.  
  130.       System.out.println("\n--------------- ITEM D ---------------");
  131.       //Se a interseccao dos conjuntos 1 e 2 E vazia
  132.       Conjunto inter = n1.interConjunto(n2);
  133.       if (inter.quantidade > 0) {
  134.           System.out.println("A interseccao nao e vazia.");
  135.       } else {
  136.           System.out.println("A interseccao e vazia.");
  137.       }
  138.       System.out.println("Interseccao - Conjunto 1 e 2:"); inter.imprimirVetor();
  139.  
  140.       System.out.println("\n--------------- ITEM E ---------------");
  141.       //Qual a diferenca entre os conjuntos 1 e 2
  142.       Conjunto difer = n1.diferencaConjunto(n2);
  143.       System.out.println("Diferenca - Conjunto 1 e 2:"); difer.imprimirVetor();
  144.  
  145.       System.out.println("--------------- FIM ---------------\n");
  146.  
  147.       System.out.println("Conjunto A:"); p1.imprimirVetor();
  148.       System.out.println("Conjunto B:"); p2.imprimirVetor();
  149.       Conjunto cartesiano = p1.produtoCartesiano(p2);
  150.       System.out.println("Conjunto Cartesiano de A e B:"); cartesiano.imprimirVetor();
  151.       Conjunto potencia_a = p1.conjuntoPotencia();
  152.       System.out.println("Conjunto Potencia de A:"); potencia_a.imprimirVetor();
  153.       Conjunto potencia_b = p2.conjuntoPotencia();
  154.       System.out.println("Conjunto Potencia de B:"); potencia_b.imprimirVetor();
  155.  
  156.       //Conjunto Universo
  157.       Conjunto universo = new Conjunto(50);
  158.       for (int numero = 0; numero <= 49; numero++) {
  159.           universo.inserirValor(numero);
  160.       }
  161.       System.out.println("\nConjunto Universo:"); universo.imprimirVetor();
  162.  
  163.       //Conjuntos Base
  164.       Conjunto DeMorganUniao = n2.uniaoConjunto(n3);
  165.       Conjunto DeMorganInter = n2.interConjunto(n3);
  166.  
  167.       Conjunto ComplementoDeMorganUniao = universo.diferencaConjunto(DeMorganUniao);
  168.       Conjunto ComplementoDeMorganInter = universo.diferencaConjunto(DeMorganInter);
  169.  
  170.       Conjunto ComplementoA = universo.diferencaConjunto(n2);
  171.       Conjunto ComplementoB = universo.diferencaConjunto(n3);
  172.  
  173.       Conjunto ComplementoInter = ComplementoA.interConjunto(ComplementoB);
  174.       Conjunto ComplementoUniao = ComplementoA.uniaoConjunto(ComplementoB);
  175.  
  176.       System.out.println("\nDeMorgan Uniao:"); ComplementoDeMorganUniao.igualdadeConjunto(ComplementoInter);
  177.       System.out.println("DeMorgan Interseccao:"); ComplementoDeMorganInter.igualdadeConjunto(ComplementoUniao);
  178.  
  179.     }
  180.  
  181. }
  182.  
  183. public class Conjunto {
  184.     Object[] vetor;
  185.     int tamanho;
  186.     int ponteiro;
  187.     int quantidade;
  188.  
  189.     Conjunto (int tamanho) {
  190.       this.vetor = new Object[tamanho];
  191.       this.tamanho = tamanho;
  192.       this.quantidade = 0;
  193.       this.ponteiro = -1;
  194.     }
  195.  
  196.     boolean inserirValor(Object valor) {
  197.       if (this.ponteiro < (this.tamanho-1)) {
  198.         this.quantidade++;
  199.         this.ponteiro++;
  200.         this.vetor[this.ponteiro] = valor;
  201.         return true;
  202.       } else {
  203.         System.out.println ("Conjunto cheio.");
  204.         return false;
  205.       }
  206.     }
  207.  
  208.     boolean verificarValor(Object valor) {
  209.       int verificador = 0;
  210.       while (verificador <= this.ponteiro) {
  211.         if (this.vetor[verificador] == valor) {
  212.           verificador = -1;
  213.           break;
  214.         }
  215.         verificador++;
  216.       }
  217.  
  218.       if (verificador == -1) {
  219.         //System.out.println ("O valor pertence ao conjunto.");
  220.         return true;
  221.       } else {
  222.         //System.out.println ("O valor nao pertence ao conjunto.");
  223.         return false;
  224.       }
  225.     }
  226.  
  227.     int verificarSubconjunto(Conjunto c) {
  228.  
  229.       if (c.quantidade > this.quantidade) {
  230.         //System.out.println ("O subconjunto e maior que o conjunto comparado.");
  231.         return -1;
  232.       } else {
  233.  
  234.         int check = c.ponteiro;
  235.         int flag = c.quantidade;
  236.         int contador = 0;
  237.         while (flag > 0) {
  238.           if (this.verificarValor(c.vetor[check])) {
  239.             contador++;
  240.           }
  241.           flag--;
  242.           check--;
  243.         }
  244.  
  245.         if (contador == c.quantidade) {
  246.           //System.out.println ("E subconjunto.");
  247.           return 1;
  248.         } else {
  249.           //System.out.println ("Nao e subconjunto.");
  250.           return 0;
  251.         }
  252.       }
  253.     }
  254.  
  255.     Conjunto uniaoConjunto(Conjunto c) {
  256.       if (this.verificarSubconjunto(c) == 0) {
  257.  
  258.           Conjunto uniao_teste = new Conjunto(this.quantidade + c.quantidade);
  259.  
  260.           int t1 = this.ponteiro;
  261.           int t2 = c.ponteiro;
  262.  
  263.           for (int x = this.quantidade; x > 0; x--) {
  264.             if (!uniao_teste.verificarValor(this.vetor[t1])) {
  265.               uniao_teste.inserirValor(this.vetor[t1]);
  266.               t1--;
  267.             }
  268.           }
  269.  
  270.           for (int x = c.quantidade; x > 0; x--) {
  271.             if(!uniao_teste.verificarValor(c.vetor[t2])) {
  272.               uniao_teste.inserirValor(c.vetor[t2]);
  273.             }
  274.             t2--;
  275.           }
  276.  
  277.           Conjunto uniao = new Conjunto(uniao_teste.quantidade);
  278.  
  279.           t1 = this.ponteiro;
  280.           t2 = c.ponteiro;
  281.  
  282.           for (int x = this.quantidade; x > 0; x--) {
  283.             if (!uniao.verificarValor(this.vetor[t1])) {
  284.               uniao.inserirValor(this.vetor[t1]);
  285.               t1--;
  286.             }
  287.           }
  288.  
  289.           for (int x = c.quantidade; x > 0; x--) {
  290.             if(!uniao.verificarValor(c.vetor[t2])) {
  291.               uniao.inserirValor(c.vetor[t2]);
  292.             }
  293.             t2--;
  294.           }
  295.           return uniao;
  296.       } else {
  297.         return this;
  298.       }
  299.     }
  300.  
  301.     Conjunto interConjunto(Conjunto c) {
  302.  
  303.       Conjunto inter_teste = new Conjunto(this.quantidade + c.quantidade);
  304.  
  305.       int contador;
  306.  
  307.       for (int i = 0; i < this.quantidade; i++) {
  308.         for (int j = 0; j < c.quantidade; j++) {
  309.           if (this.vetor[i].equals(c.vetor[j]) && !inter_teste.verificarValor(this.vetor[i])) {
  310.             inter_teste.inserirValor(this.vetor[i]);
  311.           }
  312.         }
  313.       }
  314.  
  315.       if (inter_teste.quantidade == 0) {
  316.           contador = 1;
  317.       } else {
  318.           contador = inter_teste.quantidade;
  319.       }
  320.  
  321.       Conjunto intersec = new Conjunto(contador);
  322.  
  323.       for (int i = 0; i < inter_teste.quantidade; i++) {
  324.           intersec.inserirValor(inter_teste.vetor[i]);
  325.       }
  326.  
  327.       return intersec;
  328.  
  329.     }
  330.  
  331.     Conjunto diferencaConjunto(Conjunto c) {
  332.  
  333.       Conjunto auxiliar = this.interConjunto(c);
  334.  
  335.       if (this.verificarSubconjunto(auxiliar) == 0) {
  336.  
  337.           Conjunto diferenca = new Conjunto(1);
  338.           return diferenca;
  339.  
  340.       }
  341.  
  342.       if (this.quantidade == auxiliar.quantidade) {
  343.  
  344.           Conjunto diferenca = new Conjunto(1);
  345.           return diferenca;
  346.       }
  347.  
  348.       Conjunto diferenca = new Conjunto(this.quantidade - auxiliar.quantidade);
  349.  
  350.       for (int i = 0; i < this.quantidade; i++) {
  351.           if (!auxiliar.verificarValor(this.vetor[i])) {
  352.               diferenca.inserirValor(this.vetor[i]);
  353.           }
  354.       }
  355.  
  356.       return diferenca;
  357.  
  358.     }
  359.  
  360.     Conjunto produtoCartesiano(Conjunto c) {
  361.  
  362.         if (this.quantidade > 0 && c.quantidade > 0) {
  363.  
  364.             Conjunto cartesiano = new Conjunto(this.quantidade * c.quantidade);
  365.  
  366.             for (int contA = 0; contA < this.quantidade; contA++) {
  367.                 for (int contB = 0; contB < c.quantidade; contB++) {
  368.                     cartesiano.inserirValor("("+this.vetor[contA]+","+c.vetor[contB]+")");
  369.                 }
  370.             }
  371.  
  372.             return cartesiano;
  373.  
  374.         } else {
  375.             Conjunto cartesiano = new Conjunto(1);
  376.             cartesiano.inserirValor("NULO");
  377.             return cartesiano;
  378.         }
  379.     }
  380.  
  381.     Conjunto conjuntoPotencia() {
  382.  
  383.         double s = Math.pow(2, this.quantidade);
  384.         Conjunto potencia = new Conjunto((int) s);
  385.  
  386.         Conjunto valoresBinarios = new Conjunto(potencia.tamanho);
  387.  
  388.         for (int i = 0; i < potencia.tamanho; i++) {
  389.             String binario = Integer.toBinaryString(i);
  390.             for (int j = binario.length(); j < this.quantidade; j++) {
  391.                 binario = "0"+binario;
  392.             }
  393.  
  394.             valoresBinarios.inserirValor(binario);
  395.             //System.out.println(binario);
  396.         }
  397.         //System.out.println(valoresBinarios.vetor[0].getClass().getName());
  398.         //valoresBinarios.imprimirVetor();
  399.  
  400.         for (int i = 0; i < valoresBinarios.quantidade; i++) {
  401.             String msg = "(";
  402.             for (int j = 0; j < this.quantidade; j++) {
  403.                 String bin = (String) valoresBinarios.vetor[i];
  404.                 char teste = bin.charAt(j);
  405.                 if (teste == '1') {
  406.                     msg += this.vetor[j] + ",";
  407.                 }
  408.             }
  409.             msg += ")";
  410.             potencia.inserirValor(msg);
  411.         }
  412.  
  413.         return potencia;
  414.     }
  415.  
  416.     //Checa se um conjunto é igual ao outro
  417.     boolean igualdadeConjunto(Conjunto c) {
  418.         if (this.quantidade == c.quantidade) {
  419.             int contador = 0;
  420.  
  421.             for (int i = 0; i < this.quantidade; i++) {
  422.                 if (this.verificarValor(c.vetor[i])) {
  423.                     contador++;
  424.                 }
  425.             }
  426.  
  427.             if (contador == this.quantidade) {
  428.                 System.out.println ("Os conjuntos sao iguais.");
  429.                 return true;
  430.             } else {
  431.                 System.out.println ("Os conjuntos sao diferentes. (2)");
  432.                 return false;
  433.             }
  434.  
  435.         } else {
  436.             System.out.println ("Os conjuntos sao diferentes. (1)");
  437.             return false;
  438.         }
  439.     }
  440.  
  441.     //Retorna o tamanho do conjunto
  442.     int getLength() {
  443.       return this.tamanho;
  444.     }
  445.  
  446.     //Imprime o Conjunto
  447.     void imprimirVetor() {
  448.       String msg = "[";
  449.       for (int x = 0; x <= getLength()-1; x++) {
  450.         if (x == getLength()-1)
  451.           msg += this.vetor[x] + "]";
  452.         else
  453.           msg += this.vetor[x] + ",";
  454.       }
  455.  
  456.       System.out.println(msg);
  457.     }
  458.  
  459. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement