Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h> //necessário para usar acentuação
- void inserir(int conjunto[101],int qnt,char p){
- //Função que insere um elemento dentro de um conjunto
- int i=0,n=0;
- //Entrada do elemento que será inserido no final do conjunto
- printf("\nDigite o elemento que deseja inserir no conjunto %c: ",p);
- scanf("%d",&n);
- //Insere o elemento na ultima posição do conjunto
- conjunto[qnt]=n;
- //Impressão do conjunto
- printf("\n%c = ",p);
- if (qnt==0){
- printf("{ %d }\n",conjunto[0]);
- }
- else{
- for(i=0;i<qnt+1;i++){
- if (i==0)
- printf("{ %d , ",conjunto[i]);
- else if (i==qnt){
- printf("%d }",conjunto[qnt]);
- break;
- }
- else{
- printf("%d , ",conjunto[i]);
- }
- }
- }
- }
- void remover(int conjunto[100],int qnt,char p){
- //Função que le e remove um elemento de um conjunto
- int i=0,n=0;
- printf("\nDigite o elemento que deseja remover do conjunto %c: ",p);//Entrada do elemento que será removido do conjunto
- scanf("%d",&n);
- //Processo de remoção do elemento
- for(i=0;i<qnt;i++){
- if(conjunto[i]==n){
- qnt=qnt-1;
- while(i<qnt){
- conjunto[i]=conjunto[i+1];
- i++;
- }
- break;
- }
- }
- //Impressão do conjunto
- printf("\n%c = ",p);
- if (qnt==1){
- printf("{ %d }",conjunto[0]);
- }
- else if(qnt==0)
- printf("Vázio\n");
- else{
- for(i=0;i<qnt;i++){
- if (i==0)
- printf("{ %d , ",conjunto[i]);
- else if (i+1==qnt){
- printf("%d }",conjunto[qnt]);
- break;
- }
- else{
- printf("%d , ",conjunto[i]);
- }
- }
- }
- }
- int pertence(int conjunto[100],int qnt,char p){
- //Função que verifica se um elemento pertence à um conjunto
- int n=0,i;
- //Leitura do elemento que será avaliado
- printf("\nDigite o elemento que deseja verificar se pertence ao conjunto %c: ",p);
- scanf("%d",&n);
- //Processo de avaliação
- for(i=0;i<qnt;i++){
- if(conjunto[i]==n){
- printf("\nO elemento %d pertence à %c!\n",n,p);
- return 0;
- }
- }
- printf("\nO elemento %d não pertence à %c!\n",n,p);
- return 0;
- }
- int subconjunto(int conjunto1[100],int conjunto2[100],int qnt1,int qnt2){
- //Função que verifica se um conjunto B é subconjunto de um conjunto A
- int i1,i2;
- //Repetidores que verificam se o conjunto B pertence à A
- for(i2=0;i2<qnt2;i2++){
- for(i1=0;i1<qnt1;i1++){
- if (conjunto2[i2]==conjunto1[i1])
- break;
- else if((i1+1==qnt1) && (conjunto2[i2]!=conjunto1[i1+1]) ){
- printf("\nB não é subconjunto de A\n!");
- return 0;
- }
- }
- }
- printf("\nB é subconjunto de A\n!");
- }
- void uniao(int conjunto1[100],int conjunto2[100],int qnt1,int qnt2){
- //Função que realiza a união de um conjunto A e um conjunto B
- int conjunto3[200],qnt3=0,i1,i2,i3=0;
- if (qnt1>=qnt2){
- //O conjunto resultante ja é preenchido com os elementos do conjunto com maior tamanho
- for(i3=0;i3<qnt1;i3++){
- conjunto3[i3]=conjunto1[i3];
- }
- //Bastando apenas colocar apenas os elementos que estão no menor tamanho no maior
- for(i2=0;i2<qnt2;i2++){
- for(i3=0;i3<qnt1;i3++){
- if(i3+1==qnt1){
- if(conjunto2[i2]==conjunto3[i3+1])
- break;
- conjunto3[qnt1]=conjunto2[i2];
- qnt1++;
- break;
- }
- if(conjunto2[i2]==conjunto3[i3]){
- break;
- }
- }
- }
- qnt3=qnt1;
- }
- else if (qnt2>qnt1){
- //O conjunto resultante ja é preenchido com os elementos do conjunto com maior tamanho
- for(i3=0;i3<qnt2;i3++){
- conjunto3[i3]=conjunto2[i3];
- }
- //Bastando apenas colocar apenas os elementos que estão no menor tamanho no maior
- for(i1=0;i1<qnt1;i1++){
- for(i3=0;i3<qnt2;i3++){
- if(i3+1==qnt2){
- if(conjunto1[i1]==conjunto3[i3+1])
- break;
- conjunto3[qnt2]=conjunto1[i1];
- qnt2++;
- break;
- }
- if(conjunto1[i1]==conjunto3[i3]){
- break;
- }
- }
- }
- qnt3=qnt2;
- }
- //Impressão do conjunto resultante
- printf("A união entre A e B é: ");
- if(qnt3==0){
- printf("Vázio\n");
- }
- else if(qnt3==1){
- printf("{ %d }\n",conjunto3[0]);
- }
- else{
- for(i3=0;i3<qnt3;i3++){
- if (i3==0)
- printf("{ %d , ",conjunto3[i3]);
- else if(i3+1==qnt3){
- printf("%d }",conjunto3[i3]);
- break;
- }
- else{
- printf("%d , ",conjunto3[i3]);
- }
- }
- }
- }
- void intersecao(int conjunto1[100],int conjunto2[100],int qnt1,int qnt2){
- //Função que realiza a interseção entre um conjunto A e um conjunto B
- int conjunto3[100],qnt3=0,i1,i2,i3=0;
- //O conjunto resultante receberá apenas os elementos que pertencem à A e B
- for(i1=0;i1<qnt1;i1++){
- for(i2=0;i2<qnt2;i2++){
- if(conjunto1[i1]==conjunto2[i2]){
- conjunto3[i3]=conjunto1[i1];
- i3++;
- qnt3++;
- break;
- }
- }
- }
- //Impressão do conjunto resultante
- printf("\nA interseção entre A e B é: ");
- if(qnt3==0)
- printf("Vázio\n");
- else if(qnt3==1){
- printf("{ %d }",conjunto3[0]);
- }
- else{
- for(i3=0;i3<qnt3;i3++){
- if (i3==0)
- printf("{ %d , ",conjunto3[i3]);
- else if(i3+1==qnt3){
- printf("%d }",conjunto3[i3]);
- break;
- }
- else{
- printf("%d , ",conjunto3[i3]);
- }
- }
- }
- }
- void subtracao(int conjunto1[100],int conjunto2[100],int qnt1,int qnt2){
- //Função que realiza a operação A - B
- int conjunto3[100],qnt3=0,i1,i2,i3=0;
- //Realiza a comparação entre os elementos de A e B
- for(i1=0;i1<qnt1;i1++){
- for(i2=0;i2<qnt2;i2++){
- if(conjunto1[i1]==conjunto2[i2])
- break;
- else if((conjunto1[i1]!=conjunto2[i2]) && (i2+1==qnt2)){
- //Caso um elemento n pertença à A e não pertença à B, ele entra no conjunto resultante
- conjunto3[i3]=conjunto1[i1];
- i3++;
- qnt3++;
- break;
- }
- }
- }
- if (qnt2==0){
- qnt3=qnt1;
- for(i3=0;i3<qnt3;i3++){
- conjunto3[i3]=conjunto1[i3];
- }
- }
- //Impressão do conjunto resultante
- printf("A - B = ");
- if (qnt3==0)
- printf("Vázio\n");
- else if(qnt3==1)
- printf("{ %d }",conjunto3[0]);
- else{
- for(i3=0;i3<qnt3;i3++){
- if (i3==0)
- printf("{ %d , ",conjunto3[i3]);
- else if(i3+1==qnt3){
- printf("%d }",conjunto3[i3]);
- break;
- }
- else{
- printf("%d , ",conjunto3[i3]);
- }
- }
- }
- }
- void produto_cartesiano(int conjunto1[100],int conjunto2[100],int qnt1,int qnt2){
- int c1,c2;
- printf("\nA x B = ");
- if (qnt1==0 || qnt2==0)
- printf("Vázio\n");
- else{
- //Realiza a Operação do produto cartesiano
- for(c1=0;c1<qnt1;c1++){
- for(c2=0;c2<qnt2;c2++){
- if (c2==0 && c1==0)
- printf("{ (%d,%d) , ",conjunto1[c1],conjunto2[c2]);
- else if ((c2+1==qnt2) && (c1+1==qnt1)){
- printf("(%d,%d) }\n",conjunto1[c1],conjunto2[c2]);
- break;
- }
- else
- printf("(%d,%d) , ",conjunto1[c1],conjunto2[c2]);
- }
- }
- }
- }
- void imprimir(int conjunto[100],int qnt,char c){
- //Função que apenas imprimi os elementos de um conjunto A
- int i;
- //Imprime o conjunto A
- printf("\n\nConjunto %c: ",c);
- if (qnt==0)
- printf("Vázio\n");
- else if(qnt==1){
- printf("{ %d }",conjunto[0]);
- }
- else{
- for(i=0;i<qnt;i++){
- if (i==0)
- printf("{ %d , ",conjunto[i]);
- else if(i+1==qnt){
- printf("%d }",conjunto[i]);
- break;
- }
- else{
- printf("%d , ",conjunto[i]);
- }
- }
- }
- }
- int main(){
- //Função menu, atráves dela todas as operaçoes são realizadas
- setlocale(LC_ALL, "Portuguese");//Comando necessario para usar a acentuação e caracteres especificos da lingua portuguesa
- int conjunto1[100],conjunto2[100],conjunto3[100],qnt1=0,qnt2=0,qnt3=0,i1,i2,i3=0,o=0;
- char r='S',p='N';
- //Leitura dos elementos e da quantidade de elementos dos conjuntos A e B respectivamente
- printf("\nDigite a quantidade de elementos do conjunto A: ");
- scanf("%d",&qnt1);
- printf("\nDigite os elementos do conjunto A: \n");
- for(i1=0;i1<qnt1;i1++){
- scanf("%d",&conjunto1[i1]);
- }
- printf("\nDigite a quantidade de elementos do conjunto B: ");
- scanf("%d",&qnt2);
- printf("\nDigite os elementos do conjunto B: \n");
- for(i2=0;i2<qnt2;i2++){
- scanf("%d",&conjunto2[i2]);
- }
- //Repetidor para continuar fazendo operações
- while(r=='S' || r=='s'){
- printf("_______________________________________________________________\n");
- printf("| Código | Operação |\n");
- printf("|--------|-----------------------------------------------------|\n");
- printf("| 01 | Inserir um elemento em um conjunto |\n");
- printf("| 02 | Remover um elemento de um conjunto |\n");
- printf("| 03 | Verificar se um elemento pertence à um conjunto |\n");
- printf("| 04 | Verificar se um conjunto é subconjunto de outro |\n");
- printf("| 05 | Realizar a união de dois conjuntos |\n");
- printf("| 06 | Realizar a interseção entre dois conjuntos |\n");
- printf("| 07 | Realizar a diferênca entre dois conjuntos |\n");
- printf("| 08 | Realizar o produto cartesiano entre dois conjuntos |\n");
- printf("| 09 | Imprimir os elementos de um conjunto |\n");
- printf("| 10 | Sair |\n");
- printf("|________|_____________________________________________________|\n\n");
- printf("\nDigite o código correspondente a operação que deseja realizar: ");
- scanf("%d",&o);
- //Switch case para o menu de opções
- switch(o){
- case(1):
- while((p!='A') && (p!='a') && (p!='B') && (p!='b')){
- printf("\nCom qual dos conjuntos deseja realizar a operação ? ");
- scanf(" %c",&p);
- if (p=='A' || p=='a'){
- inserir(conjunto1,qnt1,'A');
- qnt1=qnt1+1;
- }
- else if ((p=='B') || (p=='b')){
- inserir(conjunto2,qnt2,'B');
- qnt2=qnt2+1;
- }
- else
- printf("\nConjunto inválido!\n");
- }
- break;
- case(2):
- while((p!='A') && (p!='a') && (p!='B') && (p!='b')){
- printf("\nCom qual dos conjuntos deseja realizar a operação ? ");
- scanf(" %c",&p);
- if (p=='A' || p=='a'){
- remover(conjunto1,qnt1,'A');
- qnt1=qnt1-1;
- }
- else if ((p=='B') || (p=='b')){
- remover(conjunto2,qnt2,'B');
- qnt2=qnt2-1;
- }
- else
- printf("\nConjunto inválido!\n");
- }
- break;
- case(3):
- while((p!='A') && (p!='a') && (p!='B') && (p!='b')){
- printf("\nCom qual dos conjuntos deseja realizar a operação ? ");
- scanf(" %c",&p);
- if (p=='A' || p=='a')
- pertence(conjunto1,qnt1,'A');
- else if ((p=='B') || (p=='b'))
- pertence(conjunto2,qnt2,'B');
- else
- printf("\nConjunto inválido!\n");
- }
- break;
- case(4):
- subconjunto(conjunto1,conjunto2,qnt1,qnt2);
- break;
- case(5):
- uniao(conjunto1,conjunto2,qnt1,qnt2);
- break;
- case(6):
- intersecao(conjunto1,conjunto2,qnt1,qnt2);
- break;
- case(7):
- subtracao(conjunto1,conjunto2,qnt1,qnt2);
- break;
- case(8):
- produto_cartesiano(conjunto1,conjunto2,qnt1,qnt2);
- break;
- case(9):
- imprimir(conjunto1,qnt1,'A');
- imprimir(conjunto2,qnt2,'B');
- break;
- case(10):
- return 0;
- default:
- printf("\nOperação inválida!\n\n");
- }
- printf("\n\nDeseja realizar outra operação ?\n");
- scanf(" %c",&r);
- if ((r=='S') || (r=='s')){
- system("cls");
- imprimir(conjunto1,qnt1,'A');
- imprimir(conjunto2,qnt2,'B');
- printf("\n\n");
- p='N';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement