Last active
November 2, 2021 16:20
-
-
Save gabrielpadron/05a9ae99be13b93e9023ad97dfc0f333 to your computer and use it in GitHub Desktop.
Revisions
-
gabrielpadron revised this gist
Nov 2, 2021 . 1 changed file with 6 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -44,9 +44,12 @@ void inserirElemento(Conjunto *A, Fracao *fracao) { } void lerConjunto(Conjunto *A) { int num, den; while (scanf("%d/%d", &num, &den)) { Fracao *f = malloc(sizeof(Fracao)); f->numerador = num; f->denominador = den; inserirElemento(A, f); } } -
gabrielpadron revised this gist
Nov 2, 2021 . 1 changed file with 7 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -29,7 +29,9 @@ void apagarConjunto(Conjunto *A); // Insere um elemento na lista circular apos o no atual void inserirElemento(Conjunto *A, Fracao *fracao) { FracaoNo *novo = malloc(sizeof(FracaoNo)); novo->fracao = malloc(sizeof(Fracao)); novo->fracao->numerador = fracao->numerador; novo->fracao->denominador = fracao->denominador; if (A->atual) { novo->proximo = A->atual->proximo; @@ -42,9 +44,9 @@ void inserirElemento(Conjunto *A, Fracao *fracao) { } void lerConjunto(Conjunto *A) { Fracao f; while (scanf("%d/%d", &f.numerador, &f.denominador)) { inserirElemento(A, &f); } } @@ -64,7 +66,7 @@ int buscar(Conjunto *A, Fracao *f) { // retorna a intersecao das duas listas Conjunto *Intersecao(Conjunto *A, Conjunto *B) { Conjunto *intersecao = criarConjunto(); return intersecao; } -
gabrielpadron created this gist
Nov 1, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,101 @@ #include <stdio.h> #include <stdlib.h> typedef struct { int numerador; // Numerador da fracao int denominador; // Denominador da fracao } Fracao; typedef struct FracaoNo { struct FracaoNo *proximo; // No sucessor ao no atual struct FracaoNo *anterior; // No anterior ao no atual Fracao *fracao; } FracaoNo; typedef struct Conjunto { FracaoNo *atual; // No atual da lista circular } Conjunto; // Retorna uma lista circular Conjunto *criarConjunto() { Conjunto *novo = malloc(sizeof(Conjunto)); novo->atual = NULL; return novo; } // Apaga uma lista circular void apagarConjunto(Conjunto *A); // Insere um elemento na lista circular apos o no atual void inserirElemento(Conjunto *A, Fracao *fracao) { FracaoNo *novo = malloc(sizeof(FracaoNo)); novo->fracao = fracao; if (A->atual) { novo->proximo = A->atual->proximo; A->atual->proximo = novo; } else { A->atual = novo; novo->proximo = novo; } } void lerConjunto(Conjunto *A) { Fracao fracao; while (scanf("%d/%d", &fracao.numerador, &fracao.denominador)) { inserirElemento(A, &fracao); } } int buscar(Conjunto *A, Fracao *f) { FracaoNo *p = A->atual; if (p) { do { if (p->fracao->numerador == f->numerador && p->fracao->denominador == f->denominador) return 1; p = p->proximo; } while(p != A->atual); } return 0; } // retorna a intersecao das duas listas Conjunto *Intersecao(Conjunto *A, Conjunto *B) { Conjunto *intersecao = criarConjunto(); return intersecao; } void imprimirFracao(Fracao *f) { printf("%d/%d ", f->numerador, f->denominador); } // imprime o conjunto de fracoes void imprimirConjunto(Conjunto *A) { FracaoNo *p = A->atual; if (p) { do { imprimirFracao(p->fracao); p = p->proximo; } while(p != A->atual); } printf("\n"); } int main() { Conjunto *A, *B; A = criarConjunto(); B = criarConjunto(); lerConjunto(A); lerConjunto(B); printf("A: "); imprimirConjunto(A); printf("B: "); imprimirConjunto(B); printf("AeB: "); return 0; }