Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.42 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<limits.h>
  5.  
  6.  
  7. // Prototipos das funcoes:
  8.  
  9. void gerar_conjuntoA(int vetorA[], int tamA);
  10. void gerar_conjuntoB(int vetorB[], int tamB);
  11. void exibir_menu();
  12. void verificar_pertinencia(int vetorA[], int tamA, int vetorB[], int tamB);
  13. void mostrar_maior_menor(int vetorA[], int tamA, int vetorB[], int tamB);
  14. void verificar_igualdade(int vetorA[], int tamA, int vetorB[], int tamB);
  15. void verificar_se_contem(int vetorA[], int tamA, int vetorB[], int tamB);
  16. void gerar_uniao(int vetorA[], int tamA, int vetorB[], int tamB);
  17. void gerar_intersecao(int vetorA[], int tamA, int vetorB[], int tamB);
  18. void gerar_diferenca(int vetorA[], int tamA, int vetorB[], int tamB);
  19. void complemento_A_B(int vetorA[], int tamA, int vetorB[], int tamB);
  20.  
  21. int main()
  22. {
  23. int tam_A=0, tam_B=0;
  24. int op=0;
  25.  
  26. printf("*********************** VALORES DOS CONJUNTOS ***********************\n\n");
  27.  
  28.  
  29. // Entrada para definir o tamanho do vetor de numeros aleatorios:
  30.  
  31. printf("Digite o tamanho do conjunto A: ");
  32. scanf("%d", &tam_A);
  33.  
  34. int conjunto_A[tam_A];
  35.  
  36.  
  37. // Funcao para gerar o conjunto A com numeros aleatorios:
  38.  
  39. gerar_conjuntoA(conjunto_A, tam_A);
  40.  
  41. printf("\n");
  42.  
  43.  
  44. // Entrada para definir o tamanho do vetor de numeros digitados pelo usuario:
  45.  
  46. printf("Digite o tamanho do conjunto B: ");
  47. scanf("%d", &tam_B);
  48.  
  49. int conjunto_B[tam_B];
  50.  
  51.  
  52. // Funcao para gerar o conjunto B com numeros digitados pelo usuario:
  53.  
  54. gerar_conjuntoB(conjunto_B, tam_B);
  55.  
  56.  
  57. // Chamada da funcao para exibicao do menu e escolha da opcao desejada:
  58.  
  59. exibir_menu();
  60.  
  61. while(1)
  62. {
  63. printf(" > Opcao: ");
  64. scanf("%d", &op);
  65.  
  66. switch(op)
  67. {
  68. // Opcao 1 - Verificar pertinencia de um elemento:
  69.  
  70. case 1: system("cls");
  71. verificar_pertinencia(conjunto_A, tam_A, conjunto_B, tam_B);
  72. system("PAUSE");
  73. exibir_menu();
  74. break;
  75.  
  76. // Opcao 2 - Exibir elementos de maior e menor valor de A e B:
  77.  
  78. case 2: system("cls");
  79. mostrar_maior_menor(conjunto_A, tam_A, conjunto_B, tam_B);
  80. system("PAUSE");
  81. exibir_menu();
  82. break;
  83.  
  84. // Opcao 3 - Verificar igualdade dos conjuntos:
  85.  
  86. case 3: system("cls");
  87. verificar_igualdade(conjunto_A, tam_A, conjunto_B, tam_B);
  88. system("PAUSE");
  89. exibir_menu();
  90. break;
  91.  
  92. // Opcao 4 - Verificar se A e subconjunto de B ou se B e subconjunto de A:
  93.  
  94. case 4: system("cls");
  95. verificar_se_contem(conjunto_A, tam_A, conjunto_B, tam_B);
  96. system("PAUSE");
  97. exibir_menu();
  98. break;
  99.  
  100. // Opcao 5 - Gerar o conjunto de Uniao de A e B:
  101.  
  102. case 5: system("cls");
  103. gerar_uniao(conjunto_A, tam_A, conjunto_B, tam_B);
  104. system("PAUSE");
  105. exibir_menu();
  106. break;
  107.  
  108. // Opcao 6 - Gerar o conjunto de Intersecao entre A e B:
  109.  
  110. case 6: system("cls");
  111. gerar_intersecao(conjunto_A, tam_A, conjunto_B, tam_B);
  112. system("PAUSE");
  113. exibir_menu();
  114. break;
  115.  
  116. // Opcao 7 - Gerar os conjuntos de Diferenca A-B e B-A:
  117.  
  118. case 7: system("cls");
  119. gerar_diferenca(conjunto_A, tam_A, conjunto_B, tam_B);
  120. system("PAUSE");
  121. exibir_menu();
  122. break;
  123.  
  124. // Opcao 8 - Gerar o Conjunto das Partes de B:
  125.  
  126. case 8: system("cls");
  127. printf("\n * OPCAO 8 - GERAR O CONJUNTO DAS PARTES DE B *\n\n");
  128. printf("Esta funcao nao foi implementada.\n\n\n");
  129. system("PAUSE");
  130. exibir_menu();
  131. break;
  132.  
  133. // Opcao 9 - Gerar os conjuntos de Complemento de A e Complemento de B:
  134.  
  135. case 9: system("cls");
  136. complemento_A_B(conjunto_A, tam_A, conjunto_B, tam_B);
  137. system("PAUSE");
  138. exibir_menu();
  139. break;
  140.  
  141. // Opcao 0 - Sair:
  142.  
  143. case 0: return 0;
  144.  
  145. // Exibir o menu ate que seja digitada uma das opcoes:
  146.  
  147. default: exibir_menu();
  148. }
  149.  
  150. }
  151.  
  152. printf("\n\n");
  153.  
  154. system("PAUSE");
  155. return 0;
  156. }
  157.  
  158.  
  159. // Funcao para gerar valores aleatorios para o conjunto A:
  160.  
  161. void gerar_conjuntoA(int vetorA[], int tamA)
  162. {
  163. int i=0, j=0, valor=0;
  164.  
  165. srand(time(NULL));
  166.  
  167. for(i=0; i<tamA; i++)
  168. {
  169. valor = (rand()%99)-49;
  170.  
  171. for(j=0; j<tamA; j++)
  172. {
  173. if(valor == vetorA[j])
  174. {
  175. valor = (rand()%99)-49;
  176. j = -1;
  177. }
  178. }
  179.  
  180. vetorA[i] = valor;
  181. }
  182.  
  183. /*
  184. // Teste de impressao do conjunto A:
  185.  
  186. for(i=0; i<tamA; i++)
  187. {
  188. printf ("%d\n", vetorA[i]);
  189. }
  190. */
  191. }
  192.  
  193.  
  194. // Funcao para receber valores do usuario para o conjunto B:
  195.  
  196. void gerar_conjuntoB(int vetorB[], int tamB)
  197. {
  198. int i=0, j=0, valor=0;
  199.  
  200. printf("\n");
  201.  
  202. for(i=0; i<tamB; i++)
  203. {
  204. printf("Digite o valor da posicao [%d] do conjunto B: ", i);
  205. scanf("%d", &valor);
  206.  
  207. for(j=0; j<=i; j++)
  208. {
  209. /*
  210.  
  211. Obs.: Por algum motivo, em alguns testes houveram resultados inesperados na nova solicitao.
  212.  
  213. Por exemplo, se o usuario digitar o numero 3 como tamanho do vetor, durante o recebimento dos
  214. valores, quando o indice atingir a posicao [2], e o usuario digitar o numero 3 (mesmo se ele
  215. não tiver sido digitado antes), o programa informa que o 3 ja foi digitado.
  216.  
  217. Estranhamente, se ele for digitado na posicao [0] ou [1], funciona normalmente. E isso nao
  218. esta ocorrendo com outros valores, por enquanto, so com o 3.
  219.  
  220. Gostaria de uma explicacao sobre o motivo desta ocorrencia, se possivel.
  221.  
  222. */
  223.  
  224. /*
  225.  
  226. Para gerar o Complemento de B (questao 9), o valor digitado pelo usuario para o Conjunto B
  227. tem que pertencer ao Conjunto Universo (-49 a 49), portanto, ele deve ser testado:
  228.  
  229. */
  230.  
  231. while(valor==vetorB[j] || valor<-49 || valor>49) //
  232. {
  233. printf("\nErro: O valor ja existe no conjunto\n");
  234. printf(" OU\n");
  235. printf("Erro: O valor nao pertence ao intervalo de -49 a 49\n\n");
  236.  
  237.  
  238. printf("Digite o valor da posicao [%d] do conjunto B: ", i);
  239. scanf("%d", &valor);
  240. }
  241. }
  242.  
  243. vetorB[i] = valor;
  244. }
  245.  
  246. /*
  247. // Teste de impressao do conjunto B:
  248.  
  249. printf("\n");
  250.  
  251. for(i=0; i<tamB; i++)
  252. {
  253. printf ("%d\n", vetorB[i]);
  254. }
  255. */
  256. }
  257.  
  258.  
  259. // Funcao para exibir o menu:
  260.  
  261. void exibir_menu()
  262. {
  263. system("cls");
  264.  
  265. printf("******************************** MENU ********************************\n\n");
  266. printf("1 - Verificar pertinencia de um elemento\n");
  267. printf("2 - Exibir elementos de maior e menor valor de A e B\n");
  268. printf("3 - Verificar igualdade dos conjuntos\n");
  269. printf("4 - Verificar se A e subconjunto de B ou se B e subconjunto de A\n");
  270. printf("5 - Gerar o conjunto de Uniao de A e B\n");
  271. printf("6 - Gerar o conjunto de Interseccao de A e B\n");
  272. printf("7 - Gerar os conjuntos de Diferenca A-B e B-A\n");
  273. printf("8 - Gerar o conjunto das partes de B\n");
  274. printf("9 - Gerar os conjuntos de Complemento de A e Complemento de B\n");
  275. printf("0 - Sair\n");
  276. printf("\n**********************************************************************\n\n");
  277. }
  278.  
  279.  
  280. // Funcao para verificar se o valor digitado pelo usuario pertence aos conjuntos:
  281.  
  282. void verificar_pertinencia(int vetorA[], int tamA, int vetorB[], int tamB)
  283. {
  284. printf("\n * OPCAO 1 - VERIFICAR PERTINENCIA DE UM ELEMENTO *\n\n");
  285.  
  286. int i=0, j=0, valor=0;
  287. int contA=0, contB=0;
  288.  
  289. printf("Digite o valor a ser procurado nos conjuntos: ");
  290. scanf("%d", &valor);
  291.  
  292. printf("\n\n");
  293.  
  294.  
  295. // Verificar pertinencia no conjunto A (aleatorio):
  296.  
  297. for(i=0; i<tamA; i++)
  298. {
  299. if(valor==vetorA[i])
  300. {
  301. contA++;
  302. }
  303. }
  304.  
  305. if(contA==1)
  306. {
  307. printf("O valor pertence ao conjunto A.\n");
  308. }
  309. else
  310. {
  311. printf("O valor nao pertence ao conjunto A.\n");
  312. }
  313.  
  314.  
  315. // Verificar pertinencia no conjunto B (usuario):
  316.  
  317. for(j=0; j<tamB; j++)
  318. {
  319. if(valor==vetorB[j])
  320. {
  321. contB++;
  322. }
  323. }
  324.  
  325. if(contB==1)
  326. {
  327. printf("O valor pertence ao conjunto B.\n");
  328. }
  329. else
  330. {
  331. printf("O valor nao pertence ao conjunto B.\n");
  332. }
  333.  
  334. printf("\n\n");
  335. }
  336.  
  337.  
  338. // Funcao para mostrar o maior e menor elemento de cada um dos conjuntos:
  339.  
  340. void mostrar_maior_menor(int vetorA[], int tamA, int vetorB[], int tamB)
  341. {
  342. printf("\n * OPCAO 2 - EXIBIR ELEMENTOS DE MAIOR E MENOR VALOR DE A E B *\n\n");
  343.  
  344. int i=0, j=0;
  345. int maiorA = INT_MIN, menorA = INT_MAX, maiorB = INT_MIN, menorB = INT_MAX;
  346.  
  347.  
  348. // Verificar menor elemento do conjunto A:
  349.  
  350. for(i=0; i<tamA; i++)
  351. {
  352. if(vetorA[i]<menorA)
  353. {
  354. menorA = vetorA[i];
  355. }
  356. }
  357.  
  358.  
  359. // Verificar maior elemento do conjunto A:
  360.  
  361. for(j=0; j<tamA; j++)
  362. {
  363. if(vetorA[j]>maiorA)
  364. {
  365. maiorA = vetorA[j];
  366. }
  367. }
  368.  
  369.  
  370. // Verificar menor elemento do conjunto B:
  371.  
  372. for(i=0; i<tamB; i++)
  373. {
  374. if(vetorB[i]<menorB)
  375. {
  376. menorB = vetorB[i];
  377. }
  378. }
  379.  
  380.  
  381. // Verificar maior elemento do conjunto B:
  382.  
  383. for(j=0; j<tamB; j++)
  384. {
  385. if(vetorB[j]>maiorB)
  386. {
  387. maiorB = vetorB[j];
  388. }
  389. }
  390.  
  391.  
  392. // Impressao dos resultados:
  393.  
  394. printf("\n");
  395.  
  396. printf("O menor valor do conjunto A e %d.\n", menorA);
  397. printf("O maior valor do conjunto A e %d.\n", maiorA);
  398.  
  399. printf("\n");
  400.  
  401. printf("O menor valor do conjunto B e %d.\n", menorB);
  402. printf("O maior valor do conjunto B e %d.\n", maiorB);
  403.  
  404. printf("\n\n");
  405. }
  406.  
  407.  
  408. // Funcao para verificar se os conjuntos sao iguais:
  409.  
  410. void verificar_igualdade(int vetorA[], int tamA, int vetorB[], int tamB)
  411. {
  412. printf("\n * OPCAO 3 - VERIFICAR IGUALDADE DOS CONJUNTOS *\n\n");
  413.  
  414. int i=0, j=0;
  415. int cont=0, total=0;
  416.  
  417. if(tamA!=tamB)
  418. {
  419. printf("Os conjuntos sao diferentes.\n");
  420. }
  421. else
  422. {
  423. for(i=0; i<tamA; i++)
  424. {
  425. for(j=0; j<tamB; j++)
  426. {
  427. if(vetorA[i]==vetorB[j])
  428. {
  429. cont++;
  430. }
  431. }
  432. }
  433.  
  434. if(cont==tamA) // ou if(cont==tamB)
  435. {
  436. printf("Os conjuntos sao iguais.\n");
  437. }
  438. else
  439. {
  440. printf("Os conjuntos sao diferentes.\n");
  441. }
  442. }
  443.  
  444. printf("\n\n");
  445. }
  446.  
  447.  
  448. // Funcao para verificar se o conjunto A esta contido em B ou se B esta contido em A:
  449.  
  450. void verificar_se_contem(int vetorA[], int tamA, int vetorB[], int tamB)
  451. {
  452. printf("\n * OPCAO 4 - VERIFICAR SE A E SUBCONJUNTO DE B OU SE B E SUBCONJUNTO DE A *\n\n");
  453.  
  454. int i=0, j=0;
  455. int cont=0;
  456.  
  457. if(tamA>tamB)
  458. {
  459. for(i=0; i<tamA; i++)
  460. {
  461. for(j=0; j<tamB; j++)
  462. {
  463. if(vetorA[i]==vetorB[j])
  464. {
  465. cont++;
  466. }
  467. }
  468. }
  469.  
  470. if(cont==0)
  471. {
  472. printf("O conjunto A nao esta contido no conjunto B.\n"); // Por ser maior
  473. printf("O conjunto B nao esta contido no conjunto A.\n");
  474. }
  475. else
  476. if(cont==tamB)
  477. {
  478. printf("O conjunto A nao esta contido no conjunto B.\n"); // Por ser maior
  479. printf("O conjunto B esta contido no conjunto A.\n");
  480. }
  481. }
  482. else
  483. if(tamB>tamA)
  484. {
  485. for(i=0; i<tamA; i++)
  486. {
  487. for(j=0; j<tamB; j++)
  488. {
  489. if(vetorA[i]==vetorB[j])
  490. {
  491. cont++;
  492. }
  493. }
  494. }
  495.  
  496. if(cont==0)
  497. {
  498. printf("O conjunto B nao esta contido no conjunto A.\n"); // Por ser maior
  499. printf("O conjunto A nao esta contido no conjunto B.\n");
  500. }
  501. else
  502. if(cont==tamA)
  503. {
  504. printf("O conjunto B nao esta contido no conjunto A.\n"); // Por ser maior
  505. printf("O conjunto A esta contido no conjunto B.\n");
  506. }
  507. }
  508. else // Quando os conjuntos tiverem o mesmo numero de elementos:
  509. {
  510. for(i=0; i<tamA; i++)
  511. {
  512. for(j=0; j<tamB; j++)
  513. {
  514. if(vetorA[i]==vetorB[j])
  515. {
  516. cont++;
  517. }
  518. }
  519. }
  520.  
  521. if(cont==tamA) // ou if(cont==tamB)
  522. {
  523. printf("Os conjuntos sao iguais.\n");
  524. }
  525. else
  526. {
  527. printf("Os conjuntos sao disjuntos.\n");
  528. }
  529. }
  530.  
  531. printf("\n\n");
  532. }
  533.  
  534.  
  535. // Funcao para fazer a uniao do conjunto A com o conjunto B:
  536.  
  537. void gerar_uniao(int vetorA[], int tamA, int vetorB[], int tamB)
  538. {
  539. printf("\n * OPCAO 5 - GERAR O CONJUNTO DE UNIAO DE A E B *\n\n");
  540.  
  541. int i=0, j=0, x=0, n=0, repete=0;
  542. int tam_uniao = tamA+tamB;
  543. int concatenado[tam_uniao];
  544. int uniao[tam_uniao];
  545.  
  546.  
  547. // Lacos para fazer a concatenacao dos conjuntos A e B:
  548.  
  549. for(i=0; i<tamA; i++)
  550. {
  551. concatenado[x] = vetorA[i];
  552. x++;
  553. }
  554.  
  555. for(j=0; j<tamB; j++)
  556. {
  557. concatenado[x] = vetorB[j];
  558. x++;
  559. }
  560.  
  561.  
  562. // Laco para fazer a comparacao entre valores para eliminar os repetidos:
  563.  
  564. for(i=0; i<x; i++)
  565. {
  566. if(i==0)
  567. {
  568. uniao[n] = concatenado[i];
  569. n++;
  570. }
  571. else
  572. {
  573. for(j=0; j<n; j++)
  574. {
  575. if(concatenado[i]==uniao[j])
  576. {
  577. repete++;
  578. }
  579. }
  580.  
  581. if(repete<1)
  582. {
  583. uniao[n] = concatenado[i];
  584. n++;
  585. }
  586.  
  587. repete = 0;
  588. }
  589. }
  590.  
  591.  
  592. // Bubble sort para fazer a ordenacao dos valores:
  593.  
  594. int aux=0;
  595.  
  596. for(i=0; i<n; i++)
  597. {
  598. for(j=0; j<n-1; j++)
  599. {
  600. if(uniao[j]>uniao[j+1])
  601. {
  602. aux = uniao[j];
  603. uniao[j] = uniao[j+1];
  604. uniao[j+1] = aux;
  605. }
  606. }
  607. }
  608.  
  609.  
  610. // Impressao do Conjunto Uniao ordenado em ordem crescente:
  611.  
  612. for(j=0; j<n; j++)
  613. {
  614. printf("%d\n", uniao[j]);
  615. }
  616.  
  617. printf("\n\n");
  618. }
  619.  
  620.  
  621. // Funcao para verificar os valores da intersecao entre o conjunto A e o B:
  622.  
  623. void gerar_intersecao(int vetorA[], int tamA, int vetorB[], int tamB)
  624. {
  625. printf("\n * OPCAO 6 - GERAR O CONJUNTO DE INTERSECAO ENTRE A E B *\n\n");
  626.  
  627. int i=0, j=0, n=0;
  628. int tam_intersecao=tamA+tamB;
  629. int intersecao[tam_intersecao];
  630.  
  631.  
  632. // Laco para criar um novo vetor com os valores presentes na intersecao:
  633.  
  634. for(i=0; i<tamA; i++)
  635. {
  636. for(j=0; j<tamB; j++)
  637. {
  638. if(vetorA[i]==vetorB[j])
  639. {
  640. intersecao[n] = vetorA[i]; // ou vetorB[j];
  641. n++;
  642. }
  643. }
  644. }
  645.  
  646.  
  647. // Impressao do resultado:
  648.  
  649. if(n==0)
  650. {
  651. printf("Os conjuntos sao disjuntos.\n");
  652. }
  653. else
  654. {
  655. // Bubble sort para fazer a ordenacao dos valores do conjunto:
  656.  
  657. int aux=0;
  658.  
  659. for(i=0; i<n; i++)
  660. {
  661. for(j=0; j<n-1; j++)
  662. {
  663. if(intersecao[j]>intersecao[j+1])
  664. {
  665. aux = intersecao[j];
  666. intersecao[j] = intersecao[j+1];
  667. intersecao[j+1] = aux;
  668. }
  669. }
  670. }
  671.  
  672.  
  673. // Impressao dos valores da intersecao ordenados em ordem crescente:
  674.  
  675. for(i=0; i<n; i++)
  676. {
  677. printf("%d\n", intersecao[i]);
  678. }
  679. }
  680.  
  681. printf("\n\n");
  682. }
  683.  
  684.  
  685. // Funcao para gerar os conjuntos de Diferenca A-B e B-A:
  686.  
  687. void gerar_diferenca(int vetorA[], int tamA, int vetorB[], int tamB)
  688. {
  689. printf("\n * OPCAO 7 - GERAR OS CONJUNTOS DE DIFERENCA A-B e B-A *\n\n");
  690.  
  691. int i=0, j=0, contA=0, contB=0, aux=0;
  692. int diferenca_AB[tamA];
  693. int diferenca_BA[tamB];
  694. int cont_dif=0;
  695.  
  696.  
  697. // Verificar a diferenca A-B
  698.  
  699. for(i=0; i<tamA; i++)
  700. {
  701. for(j=0; j<tamB; j++)
  702. {
  703. if(vetorA[i]!=vetorB[j])
  704. {
  705. cont_dif++;
  706. }
  707. }
  708.  
  709. if(cont_dif==tamB)
  710. {
  711. diferenca_AB[contA] = vetorA[i];
  712. contA++;
  713. }
  714.  
  715. cont_dif=0;
  716.  
  717. }
  718.  
  719.  
  720. // Verificar a diferenca B-A
  721.  
  722. for(i=0; i<tamB; i++)
  723. {
  724. for(j=0; j<tamA; j++)
  725. {
  726. if(vetorB[i]!=vetorA[j])
  727. {
  728. cont_dif++;
  729. }
  730. }
  731.  
  732. if(cont_dif==tamA)
  733. {
  734. diferenca_BA[contB] = vetorB[i];
  735. contB++;
  736. }
  737.  
  738. cont_dif=0;
  739.  
  740. }
  741.  
  742.  
  743. // Bubble sort para fazer a ordenacao dos valores de A-B:
  744.  
  745. aux=0;
  746.  
  747. for(i=0; i<contA; i++)
  748. {
  749. for(j=0; j<contA-1; j++)
  750. {
  751. if(diferenca_AB[j]>diferenca_AB[j+1])
  752. {
  753. aux = diferenca_AB[j];
  754. diferenca_AB[j] = diferenca_AB[j+1];
  755. diferenca_AB[j+1] = aux;
  756. }
  757. }
  758. }
  759.  
  760.  
  761. // Impressao dos valores de A-B ordenados em ordem crescente:
  762.  
  763. printf("Resultado de A - B:\n");
  764.  
  765. for(i=0; i<contA; i++)
  766. {
  767. printf("%d\n", diferenca_AB[i]);
  768. }
  769.  
  770. printf("\n");
  771.  
  772.  
  773. // Bubble sort para fazer a ordenacao dos valores de B-A:
  774.  
  775. aux=0;
  776.  
  777. for(i=0; i<contB; i++)
  778. {
  779. for(j=0; j<contB-1; j++)
  780. {
  781. if(diferenca_BA[j]>diferenca_BA[j+1])
  782. {
  783. aux = diferenca_BA[j];
  784. diferenca_BA[j] = diferenca_BA[j+1];
  785. diferenca_BA[j+1] = aux;
  786. }
  787. }
  788. }
  789.  
  790.  
  791. // Impressao de B-A
  792.  
  793. printf("Resultado de B - A:\n");
  794.  
  795. for(i=0; i<contB; i++)
  796. {
  797. printf("%d\n", diferenca_BA[i]);
  798. }
  799.  
  800. printf("\n\n");
  801. }
  802.  
  803.  
  804. // Funcao para exibir o Complemento de A e o Complemento de B em relacao ao Conjunto Universo:
  805.  
  806. void complemento_A_B(int vetorA[], int tamA, int vetorB[], int tamB)
  807. {
  808. printf("\n * OPCAO 9 - GERAR OS CONJUNTOS DE COMPLEMENTO DE A E COMPLEMENTO DE B *\n\n");
  809.  
  810. int i=0, j=0, n=0, cont=0;
  811. int conj_U[99], valor_U = -49, comp_A[99], comp_B[99];
  812.  
  813.  
  814. // Laco para gerar os valores do Conjunto Universo:
  815.  
  816. for(i=0; i<99; i++)
  817. {
  818. conj_U[i] = valor_U;
  819. valor_U++;
  820. }
  821.  
  822.  
  823. /*
  824. // Teste de impressao do Conjunto Universo:
  825.  
  826. for(i=0; i<99; i++)
  827. {
  828. printf("%d\n", conj_U[i]);
  829. }
  830. */
  831.  
  832.  
  833. // Laco para gerar o conjunto de Complemento de A:
  834.  
  835. for(i=0; i<99; i++)
  836. {
  837. for(j=0; j<tamA; j++)
  838. {
  839. if(conj_U[i]!=vetorA[j])
  840. {
  841. cont++;
  842. }
  843. }
  844.  
  845. if(cont==tamA)
  846. {
  847. comp_A[n] = conj_U[i];
  848. n++;
  849. }
  850.  
  851. cont = 0;
  852. }
  853.  
  854.  
  855. // Impressao do Complemento de A:
  856.  
  857. printf("Complemento de A:\n");
  858.  
  859. for(i=0; i<n; i++)
  860. {
  861. printf("%d\n", comp_A[i]);
  862. }
  863.  
  864. n = 0;
  865. cont = 0;
  866.  
  867. printf("\n");
  868.  
  869.  
  870. // Laco para gerar o conjunto de Complemento de B:
  871.  
  872. for(i=0; i<99; i++)
  873. {
  874. for(j=0; j<tamB; j++)
  875. {
  876. if(conj_U[i]!=vetorB[j])
  877. {
  878. cont++;
  879. }
  880. }
  881.  
  882. if(cont==tamB)
  883. {
  884. comp_B[n] = conj_U[i];
  885. n++;
  886. }
  887.  
  888. cont = 0;
  889. }
  890.  
  891.  
  892. // Impressao do Complemento de B:
  893.  
  894. printf("Complemento de B:\n");
  895.  
  896. for(i=0; i<n; i++)
  897. {
  898. printf("%d\n", comp_B[i]);
  899. }
  900.  
  901. printf("\n\n");
  902. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement