Advertisement
paulogp

Conjuntos (v. 1.0.0)

Aug 7th, 2011
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 9.07 KB | None | 0 0
  1. { paulogp }
  2. { mac os 7 }
  3. program Ada23p(input, output);
  4.  
  5. uses
  6.     MemTypes, QuickDraw, OSIntf;
  7.  
  8. Type
  9.     Intervalo = 1..200;
  10.     Conj_Num_Reais = array[Intervalo] of real;
  11.     Conjunto = array[1..2] of Conj_Num_Reais;
  12.     NumElem = array[1..2] of Intervalo;
  13.  
  14.  
  15. procedure DefinirConjunto(var Elemento: Conjunto; var n_elem: NumElem);
  16. var
  17.     i, y: Intervalo;
  18.     x: integer;
  19.     j: real;
  20.  
  21. begin
  22.     for x:= 1 to 2 do
  23.     begin
  24.         writeln;
  25.         write('Número de elementos do ' , x, 'º conjunto: ');
  26.         readln(n_elem[x]);
  27.         for i:= 1 to n_elem[x] do
  28.         begin
  29.             write('v[', i:2, ']: ');
  30.             readln(Elemento[x, i]);
  31.             if i >= 2 then
  32.             begin
  33.                 j :=  Elemento[x, i];
  34.                 for y :=  1 to i - 1 do
  35.                     if Elemento[x, y] = j then
  36.                     begin
  37.                         writeln;
  38.                         writeln('Erro: valor repetido!');
  39.                         writeln('Insira outro!');
  40.                         writeln;
  41.                         i:=  i - 1;
  42.                     end;
  43.             end;
  44.         end;
  45.     end;
  46. end;
  47.  
  48. procedure SubMenu(var escolha: char);
  49.  
  50. function opcoes(escolha: char): char;
  51. begin
  52.     opcoes:=  escolha;
  53. end;
  54.  
  55. begin
  56.     clearscreen;
  57.     gotoxy(33,2);
  58.     writeln('Menu Principal');
  59.     gotoxy(33, 3);
  60.     writeln('~~~~~~~~~~~~~~');
  61.     gotoxy(25, 5);
  62.     writeln('1- Visualizar Conjuntos;');
  63.     gotoxy(25, 7);
  64.     writeln('2- Teste de Elemento');
  65.     gotoxy(25, 8);
  66.     writeln('3- Teste de Inclusão');
  67.     gotoxy(25, 10);
  68.     writeln('4- Conjunto Intercepção;');
  69.     gotoxy(25, 11);
  70.     writeln('5- Conjunto Reunião');
  71.     gotoxy(25, 12);
  72.     writeln('6- Conjunto Diferença');
  73.     gotoxy(25, 14);
  74.     writeln('7- Definir novos conjuntos;');
  75.     gotoxy(25, 16);
  76.     writeln('8- Sair');
  77.     gotoxy(25, 18);
  78.     write('Opção: ');
  79.     repeat
  80.         readln(escolha);
  81.     until (escolha >= '1') and (escolha <= '8');
  82.     writeln('Teclado: ', opcoes(escolha));
  83. end;
  84.        
  85. procedure MostraConjunto(Elemento: Conjunto; n_elem: NumElem);
  86. var
  87.     v: Intervalo;
  88.     w: integer;
  89.  
  90. begin
  91.     for w:=  1 to 2 do
  92.     begin
  93.         writeln;
  94.         write(' ':10);
  95.         write('Conjunto ', w, ': { ');
  96.         for v:=  1 to n_elem[w] do write(Elemento[w,v]:2:2, ' ');
  97.         writeln('}');
  98.     end;
  99.     writeln;
  100. end;
  101.  
  102. function Teste_Elemento(Value: real; var Elemento: Conjunto; n_elem: Numelem; Conjunt: integer): Boolean;
  103. var
  104.     u, b: Intervalo;
  105.  
  106. begin
  107.     for b:=  1 to n_elem[Conjunt] do Teste_Elemento:=  false;
  108.     for u:=  1 to n_elem[Conjunt] do
  109.         if Value = Elemento[Conjunt, u] then Teste_Elemento:=  true;
  110. end;
  111.  
  112. function teste_inclusao(Elemento: Conjunto; n_elem: NumElem; C1, C2: integer): Boolean;
  113. var
  114.     c, d: Intervalo;
  115.     f: integer;
  116.  
  117. begin
  118.     f:= 0;
  119.     if n_elem[C1] > n_elem[C2] then teste_inclusao:= false else
  120.     if n_elem[C1] <= n_elem[C2] then
  121.     for c:= 1 to n_elem[C2] do
  122.         for d:= 1 to n_elem[C1] do
  123.             if Elemento[C2,c] = Elemento[C1,d] then f:= f+1;
  124.    
  125.     if f = n_elem[C1] then teste_inclusao:=  true else teste_inclusao:=  false;
  126. end;
  127.  
  128. procedure Intercepcao(Elemento: Conjunto; n_elem: NumElem; var Inter: Conj_Num_Reais);
  129. var
  130.     g, h: Intervalo;
  131.     n, m: integer;
  132.  
  133. begin
  134.     n:= 0;
  135.     for g:= 1 to n_elem[1] do
  136.         for h:= 1 to n_elem[2] do
  137.             if Elemento[1, g]= Elemento[2, h] then
  138.             begin
  139.                 n:=  n+1;
  140.                 Inter[n]:= Elemento[1, g];
  141.             end;
  142.     writeln;
  143.     write(' ':10, 'Conjunto 1 * Conjunto 2= { ');
  144.     for m:=  1 to n do write(Inter[m]:2:2,' ');
  145.     writeln('}');
  146. end;
  147.  
  148. procedure ConjuntoReuniao(Elemento: Conjunto; n_elem: NumElem);
  149.  
  150. function Dif(x: real; Elemento: Conjunto; n_elem: NumElem): Boolean;
  151. var
  152.     r: Intervalo;
  153.  
  154. begin
  155.     Dif:=  true;
  156.     for r:=  1 to n_elem[1] do
  157.         if x = Elemento[1,r] then Dif:= false;
  158. end;
  159.  
  160. var
  161.     p, q: Intervalo;
  162.              
  163. begin
  164.     write(' ':3, 'Conjunto 1 + Conjunto 2= { ');
  165.     for p:=  1 to n_elem[1] do write(Elemento[1, p]:2:2, ' ');
  166.     for q:=  1 to n_elem[2] do
  167.         if Dif(Elemento[2,q], Elemento, n_elem) then write(Elemento[2, q]:2:2, ' ');
  168.     writeln('}');
  169. end;
  170.  
  171. procedure ConjuntoDiferenca2(Elemento: Conjunto; n_elem: NumElem; x1, x2: integer);
  172. function dif2(x: real; x2: integer; Elemento: Conjunto; n_elem: NumElem): Boolean;
  173. var
  174.     r: Intervalo;
  175.  
  176. begin
  177.     dif2:=  true;
  178.     for r:=  1 to n_elem[x2] do
  179.         if x = Elemento[x2, r] then dif2:= false;
  180. end;
  181.  
  182. var
  183.     e: Intervalo;
  184.  
  185. begin
  186.     write(' ':7, 'Conjunto ', x1,' - Conjunto ', x2, '= { ');
  187.     for e:= 1 to n_elem[x1] do
  188.         if dif2(Elemento[x1, e], x2, Elemento, n_elem) then write(Elemento[x1, e]:2:2, ' ');
  189.     writeln('}');
  190. end;
  191.  
  192. procedure ConjuntoDiferenca(Elemento: Conjunto; n_elem: NumElem; var Inter: Conj_Num_Reais);
  193. var
  194.     g, h: Intervalo;
  195.     n, m, i: integer;
  196.     aux: integer;
  197.  
  198. begin
  199.     n:= 0;
  200.     if n_elem[1] > n_elem[2] then aux:= n_elem[1] else aux:= n_elem[2];
  201.     for i:= 1 to aux do
  202.    
  203.     {for g:= 1 to n_elem[1] do
  204.     for h:= 1 to n_elem[2] do}
  205.  
  206.         if Elemento[1, g] <> Elemento[2, h] then
  207.         begin
  208.             n:= n + 1;
  209.             Inter[n]:= Elemento[1, g];
  210.         end;
  211.  
  212.     writeln;
  213.     write(' ':10, 'Conjunto 1 * Conjunto 2= { ');
  214.     for m:=  1 to n do write(Inter[m]:2:2,' ');
  215.     writeln('}');
  216. end;
  217.                        
  218. var
  219.     disjuncao: Conj_Num_Reais;
  220.     Elemento: Conjunto;
  221.     n_elementos: NumElem;
  222.     opcao, a, s: char;
  223.     valor: real;
  224.     aditivo, subtractivo: integer;
  225.  
  226. begin
  227.     gotoxy(32, 2);
  228.     writeln('Definir Conjuntos');
  229.     gotoxy(32, 3);
  230.     writeln('~~~~~~~~~~~~~~~~~');
  231.     gotoxy(8, 4);
  232.     DefinirConjunto(elemento, n_elementos);
  233.     SubMenu(opcao);
  234.     repeat
  235.         if opcao = '1' then
  236.         begin
  237.             clearscreen;
  238.             gotoxy(35, 2);          
  239.             writeln('Conjuntos');
  240.             gotoxy(35, 2);          
  241.             writeln('~~~~~~~~~');
  242.             writeln;
  243.             MostraConjunto(elemento, n_elementos);
  244.             writeln;
  245.             write('Prima uma tecla para voltar ao menu principal.');
  246.             readln;
  247.             SubMenu(opcao);
  248.         end;
  249.  
  250.         if opcao = '2' then
  251.         begin
  252.             repeat
  253.                 clearscreen;
  254.                 gotoxy(33, 2);          
  255.                 writeln('Teste de Membro');
  256.                 gotoxy(33, 3);
  257.                 writeln('~~~~~~~~~~~~~~~');
  258.                 writeln;
  259.                 MostraConjunto(elemento, n_elementos);
  260.                 writeln;
  261.                 write('Digite o valor: ');
  262.                 readln(valor);
  263.                 begin
  264.                     if ((Teste_Elemento(valor, elemento, n_elementos, 1)) and (Teste_Elemento(valor, elemento, n_elementos, 2))) then
  265.                         writeln(valor:2:2,' pertence aos dois conjuntos.')
  266.                     else
  267.                     if Teste_Elemento(valor, elemento, n_elementos, 1) then
  268.                         writeln(valor:2:2,' pertence ao conjunto 1.')
  269.                     else
  270.                     if Teste_Elemento(valor, elemento, n_elementos, 2) then
  271.                         writeln(valor:2:2,' pertence ao conjunto 2.')
  272.                     else
  273.                     writeln(valor:2:2,' não pertence a nenhum dos conjuntos.');
  274.                 end;
  275.                 writeln;
  276.                 writeln('Sub-Menu:');
  277.                 writeln(' 1- Repetir o teste.');
  278.                 writeln(' 2- Voltar ao menu.');
  279.                 writeln;
  280.                 readln(a);
  281.             until a = '2';
  282.             SubMenu(opcao);
  283.         end;
  284.  
  285.         if opcao = '3' then
  286.         begin
  287.             clearscreen;
  288.             gotoxy(33, 2);
  289.             writeln('Teste de Inclusão');
  290.             gotoxy(33, 3);          
  291.             writeln('~~~~~~~~~~~~~~~~~');
  292.             writeln;
  293.             writeln;
  294.             MostraConjunto(elemento, n_elementos);
  295.             writeln;
  296.             if ((teste_inclusao(elemento, n_elementos, 1, 2)) and (teste_inclusao(elemento, n_elementos, 2, 1))) then
  297.                 writeln('Os dois conjuntos são iguais.')
  298.             else
  299.             if teste_inclusao(elemento, n_elementos, 1, 2) then
  300.                 writeln('O conjunto 1 está contido no conjunto 2.')
  301.             else
  302.             if teste_inclusao(elemento, n_elementos, 2, 1) then
  303.                 writeln('O conjunto 2 está contido no conjunto 1.')
  304.             else
  305.                 writeln('Não há inclusão de nenhum conjunto noutro.');
  306.             writeln;
  307.             write('Prima uma tecla para voltar ao menu principal.');
  308.             readln;
  309.             SubMenu(opcao);
  310.         end;
  311.        
  312.         if opcao = '4' then
  313.         begin
  314.             clearscreen;
  315.             gotoxy(31, 2);
  316.             writeln('Conjunto Intersecção');
  317.             gotoxy(31, 3);
  318.             writeln('~~~~~~~~~~~~~~~~~~~~');
  319.             writeln;
  320.             Intercepcao(elemento, n_elementos, disjuncao);
  321.             writeln;
  322.             writeln;
  323.             writeln;
  324.             write('Prima uma tecla para voltar ao menu principal.');
  325.             readln;
  326.             SubMenu(opcao);
  327.         end;
  328.  
  329.         if opcao = '5' then
  330.         begin
  331.             clearscreen;
  332.             gotoxy(33, 2);
  333.             writeln('Conjunto Reunião');
  334.             gotoxy(33, 3);
  335.             writeln('~~~~~~~~~~~~~~~~~');
  336.             writeln;
  337.             ConjuntoReuniao(elemento, n_elementos);
  338.             writeln;
  339.             writeln;
  340.             writeln;
  341.             write('Prima uma tecla para voltar ao menu principal.');
  342.             readln;
  343.             SubMenu(opcao);
  344.         end;
  345.  
  346.         if opcao = '6' then
  347.         begin
  348.             repeat
  349.                 clearscreen;
  350.                 gotoxy(32,2);
  351.                 writeln('Conjunto Diferença');
  352.                 gotoxy(32, 3);
  353.                 writeln('~~~~~~~~~~~~~~~~~~');
  354.                 writeln;
  355.                 MostraConjunto(elemento, n_elementos);
  356.    
  357.                 {repeat
  358.                     writeln;
  359.                     write('Digite o conjunto: ');
  360.                     readln(aditivo);
  361.                 until (aditivo >= 1) and (aditivo <= 2);
  362.                 repeat
  363.                     writeln;
  364.                     write('Digite o conjunto que lhe vai subtrair: ');
  365.                     readln(subtractivo);
  366.                 until (subtractivo >= 1) and (subtractivo <= 2);
  367.                 writeln;}
  368.    
  369.                 aditivo:= 2;
  370.                 subtractivo:= 1;
  371.                 ConjuntoDiferenca(elemento, n_elementos, disjuncao);    
  372.                 writeln;
  373.                 writeln('Menu:');
  374.                 writeln(' 1 - Fazer nova subracção.');
  375.                 writeln(' 2 - Voltar ao menu.');
  376.                 writeln;
  377.                 readln(s);
  378.             until s = '2';
  379.             SubMenu(opcao);
  380.         end;
  381.  
  382.         if opcao = '7' then
  383.         begin
  384.             clearscreen;
  385.             gotoxy(33, 2);
  386.             writeln('Novo Conjunto');
  387.             gotoxy(33, 3);
  388.             writeln('~~~~~~~~~~~~~');
  389.             writeln;
  390.             DefinirConjunto(elemento, n_elementos);
  391.             SubMenu(opcao);
  392.         end;    
  393.     until opcao = '8';
  394. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement