From efb1e0f748d4a3dc36fd2997795d3ae6937575a6 Mon Sep 17 00:00:00 2001 From: Pedro Folloni Pesserl <fpesserl7@gmail.com> Date: Mon, 9 Jan 2023 01:33:09 -0300 Subject: [PATCH] t1: add libs for sets and queues --- t1/libconjunto.c | 233 +++++++++++++++++++++++++++++++++++++++++++++++ t1/libfila.c | 80 ++++++++++++++++ t1/libfila.o | Bin 0 -> 9248 bytes t1/liblef.c | 26 ++++++ t1/makefile | 14 ++- t1/mundo.c | 0 t1/teste | Bin 0 -> 22288 bytes t1/teste.c | 10 ++ t1/teste.o | Bin 0 -> 7624 bytes 9 files changed, 358 insertions(+), 5 deletions(-) create mode 100644 t1/libconjunto.c create mode 100644 t1/libfila.c create mode 100644 t1/libfila.o create mode 100644 t1/liblef.c create mode 100644 t1/mundo.c create mode 100755 t1/teste create mode 100644 t1/teste.c create mode 100644 t1/teste.o diff --git a/t1/libconjunto.c b/t1/libconjunto.c new file mode 100644 index 0000000..ce75e6b --- /dev/null +++ b/t1/libconjunto.c @@ -0,0 +1,233 @@ +#include <stdio.h> +#include <stdlib.h> +#include "libconjunto.h" + +/* retorna a posicao de um elemento em um conjunto ([0..card-1]). + * como estamos trabalhando com conjuntos ordenados, eh uma busca binaria. + * se o elemento nao esta no conjunto, retorna -1. */ +int busca_cjt(conjunto_t *c, int elemento) { + int inicio = 0; + int fim = cardinalidade_cjt(c) - 1; + int meio = fim / 2; + + while (inicio <= fim && c->v[meio] != elemento) { + if (elemento > c->v[meio]) { + inicio = meio + 1; + } else { + fim = meio - 1; + } + meio = (inicio + fim) / 2; + } + + return inicio > fim ? -1 : meio; +} + +conjunto_t *cria_cjt(int max) { + conjunto_t *c; + if ( !(c = malloc(sizeof(conjunto_t))) ) + return NULL; + c->max = max; + c->card = 0; + c->ptr = 0; + if ( !(c->v = malloc(sizeof(int) * max)) ) { + free(c); + return NULL; + } + return c; +} + +conjunto_t *destroi_cjt(conjunto_t *c) { + free(c->v); + c->v = NULL; + free(c); + return NULL; +} + +int vazio_cjt(conjunto_t *c) { + return cardinalidade_cjt(c) == 0; +} + +int cardinalidade_cjt(conjunto_t *c) { + return c->card; +} + +int insere_cjt(conjunto_t *c, int elemento) { + if (cardinalidade_cjt(c) == c->max) + return 0; + + if (pertence_cjt(c, elemento)) + return 1; + + int i = cardinalidade_cjt(c); + while (i > 0 && c->v[i - 1] > elemento) { + c->v[i] = c->v[i - 1]; + i--; + } + + c->v[i] = elemento; + c->card++; + return 1; +} + +int retira_cjt(conjunto_t *c, int elemento) { + if (!(pertence_cjt(c, elemento))) + return 0; + + int i; + for(i = busca_cjt(c, elemento); i < cardinalidade_cjt(c)-1; i++) { + c->v[i] = c->v[i + 1]; + } + + c->card--; + return 1; +} + +int pertence_cjt(conjunto_t *c, int elemento) { + return busca_cjt(c, elemento) != -1; +} + +int contido_cjt(conjunto_t *c1, conjunto_t *c2) { + int i; + for (i = 0; i < cardinalidade_cjt(c1); i++) { + if (!(pertence_cjt(c2, c1->v[i]))) + return 0; + } + return 1; +} + +int sao_iguais_cjt(conjunto_t *c1, conjunto_t *c2) { + return cardinalidade_cjt(c1) == cardinalidade_cjt(c2) && contido_cjt(c1, c2); +} + +conjunto_t *diferenca_cjt(conjunto_t *c1, conjunto_t *c2) { + conjunto_t *dif; + if ( !(dif = cria_cjt(c1->max)) ) + return NULL; + + int i; + for (i = 0; i < cardinalidade_cjt(c1); i++) { + if (!(pertence_cjt(c2, c1->v[i]))) + insere_cjt(dif, c1->v[i]); + } + + return dif; +} + +conjunto_t *interseccao_cjt(conjunto_t *c1, conjunto_t *c2) { + conjunto_t *inter; + if ( !(inter = cria_cjt(c1->max)) ) + return NULL; + + conjunto_t **menor_cjt = cardinalidade_cjt(c1) < cardinalidade_cjt(c2) ? &c1 : &c2; + conjunto_t **maior_cjt = cardinalidade_cjt(c1) > cardinalidade_cjt(c2) ? &c1 : &c2; + + int i; + for (i = 0; i < cardinalidade_cjt(*menor_cjt); i++) { + if (pertence_cjt(*maior_cjt, (*menor_cjt)->v[i])) + insere_cjt(inter, (*menor_cjt)->v[i]); + } + + return inter; +} + +conjunto_t *uniao_cjt(conjunto_t *c1, conjunto_t *c2) { + conjunto_t *uniao; + if ( !(uniao = cria_cjt(c1->max)) ) + return NULL; + + inicia_iterador_cjt(c1); + inicia_iterador_cjt(c2); + + while (c1->ptr < cardinalidade_cjt(c1) && c2->ptr < cardinalidade_cjt(c2)) { + if (c1->v[c1->ptr] < c2->v[c2->ptr]) { + insere_cjt(uniao, c1->v[c1->ptr]); + c1->ptr++; + } else { + insere_cjt(uniao, c2->v[c2->ptr]); + c2->ptr++; + } + } + + conjunto_t **ainda_falta = c1->ptr == cardinalidade_cjt(c1) ? &c2 : &c1; + + int i; + for (i = (*ainda_falta)->ptr; i < cardinalidade_cjt(*ainda_falta); i++) { + insere_cjt(uniao, (*ainda_falta)->v[i]); + } + + inicia_iterador_cjt(c1); + inicia_iterador_cjt(c2); + + return uniao; +} + +conjunto_t *copia_cjt(conjunto_t *c) { + conjunto_t *copia; + if ( !(copia = cria_cjt(c->max)) ) + return NULL; + + int i; + for (i = 0; i < cardinalidade_cjt(c); i++) { + insere_cjt(copia, c->v[i]); + } + + return copia; +} + +conjunto_t *cria_subcjt_cjt(conjunto_t *c, int n) { + if (n >= cardinalidade_cjt(c)) + return copia_cjt(c); + + conjunto_t *sub; + if ( !(sub = cria_cjt(c->max)) ) + return NULL; + + conjunto_t *disponiveis; + if ( !(disponiveis = copia_cjt(c)) ) + return NULL; + + int i; + int aleat; + for (i = 0; i < n; i++) { + aleat = rand() % cardinalidade_cjt(disponiveis); + insere_cjt(sub, disponiveis->v[aleat]); + retira_cjt(disponiveis, disponiveis->v[aleat]); + } + + destroi_cjt(disponiveis); + return sub; +} + +void imprime_cjt(conjunto_t *c) { + if (vazio_cjt(c)) { + printf("Conjunto vazio.\n"); + return; + } + + int i; + for (i = 0; i < cardinalidade_cjt(c)-1; i++) + printf("%d ", c->v[i]); + printf("%d\n", c->v[cardinalidade_cjt(c)-1]); +} + +void inicia_iterador_cjt(conjunto_t *c) { + c->ptr = 0; +} + +int incrementa_iterador_cjt(conjunto_t *c, int *ret_iterador) { + *ret_iterador = c->v[c->ptr]; + c->ptr++; + if (c->ptr > cardinalidade_cjt(c)) + return 0; + return 1; +} + +int retira_um_elemento_cjt(conjunto_t *c) { + int aleat = rand() % cardinalidade_cjt(c); + int retirar = c->v[aleat]; + int i; + for (i = aleat; i < cardinalidade_cjt(c)-1; i++) + c->v[i] = c->v[i + 1]; + c->card--; + return retirar; +} diff --git a/t1/libfila.c b/t1/libfila.c new file mode 100644 index 0000000..0341819 --- /dev/null +++ b/t1/libfila.c @@ -0,0 +1,80 @@ +#include <stdio.h> +#include <stdlib.h> +#include "libfila.h" + +fila_t *cria_fila() { + fila_t *f; + if ( !(f = malloc(sizeof(fila_t))) ) + return NULL; + + f->tamanho = 0; + f->ini = NULL; + f->fim = NULL; + return f; +} + +fila_t *destroi_fila(fila_t *f) { + int i, e = 0, tamanho = tamanho_fila(f); + for (i = 0; i < tamanho; i++) { + retira_fila(f, &e); + } + + free(f); + return NULL; +} + +int vazia_fila(fila_t *f) { + return f->tamanho == 0; +} + +int tamanho_fila(fila_t *f) { + return f->tamanho; +} + +int insere_fila(fila_t *f, int elemento) { + nodo_f_t *novo; + if ( !(novo = malloc(sizeof(nodo_f_t))) ) + return 0; + novo->elem = elemento; + novo->prox = NULL; + + (f->tamanho)++; + + if (tamanho_fila(f) == 1) { + f->ini = novo; + f->fim = novo; + return 1; + } + + f->fim->prox = novo; + f->fim = novo; + return 1; +} + +int retira_fila(fila_t *f, int *elemento) { + if (vazia_fila(f)) + return 0; + + *elemento = f->ini->elem; + nodo_f_t *temp = f->ini->prox; + free(f->ini); + f->ini = temp; + (f->tamanho)--; + return 1; +} + +void imprime_fila(fila_t *f) { + if (vazia_fila(f)) + return; + + nodo_f_t *atual = f->ini; + printf("%d", atual->elem); + + int i; + for (i = 1; i < tamanho_fila(f); i++) { + atual = atual->prox; + printf(" %d", atual->elem); + } + + printf("\n"); +} diff --git a/t1/libfila.o b/t1/libfila.o new file mode 100644 index 0000000000000000000000000000000000000000..63a7a6ae05d9a72d25341029a9ebaeafde5b2e92 GIT binary patch literal 9248 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 IFjoEl14X9%9RL6T literal 0 HcmV?d00001 diff --git a/t1/liblef.c b/t1/liblef.c new file mode 100644 index 0000000..4d53fd0 --- /dev/null +++ b/t1/liblef.c @@ -0,0 +1,26 @@ +#include <stdlib.h> + +lef_t *cria_lef() { + /*TODO: não implementado*/ + return NULL; +} + +lef_t *destroi_lef(lef_t *l) { + /*TODO: não implementado*/ + return NULL; +} + +int adiciona_inicio_lef (lef_t *l, evento_t *evento) { + /*TODO: não implementado*/ + return 0; +} + +int adiciona_ordem_lef (lef_t *l, evento_t *evento) { + /*TODO: não implementado*/ + return 0; +} + +evento_t *obtem_primeiro_lef (lef_t *l) { + /*TODO: não implementado*/ + return NULL; +} diff --git a/t1/makefile b/t1/makefile index 52c38d3..e210452 100644 --- a/t1/makefile +++ b/t1/makefile @@ -6,10 +6,13 @@ LDFLAGS = -lm CC = gcc # arquivos-objeto - objects = mundo.o libconjunto.o liblef.o libfila.o + objects = mundo.o libconjunto.o liblef.o libfila.o -mundo: mundo.o libconjunto.o liblef.o libfila.o - $(CC) -o mundo mundo.o libconjunto.o liblef.o libfila.o $(LDFLAGS) +mundo: mundo.o libconjunto.o liblef.o libfila.o + $(CC) -o mundo mundo.o libconjunto.o liblef.o libfila.o $(LDFLAGS) + +teste: teste.o liblef.o + $(CC) -o teste teste.o liblef.o $(LDFLAGS) libconjunto.o: libconjunto.c $(CC) -c $(CFLAGS) libconjunto.c @@ -23,7 +26,8 @@ libfila.o: libfila.c mundo.o: mundo.c $(CC) -c $(CFLAGS) mundo.c +teste.o: teste.c + $(CC) -c $(CFLAGS) teste.c + clean: rm -f $(objects) mundo - - diff --git a/t1/mundo.c b/t1/mundo.c new file mode 100644 index 0000000..e69de29 diff --git a/t1/teste b/t1/teste new file mode 100755 index 0000000000000000000000000000000000000000..381c674840818c707f985538d6e15643b0e32691 GIT binary patch literal 22288 zcmeHP4RBmXecyMdr+c!b)5-FOY=eDv9O4jkk{!qR10|Ad$)`lN6=OpTG0&&FC+V>6 zPQ4Gu4o>1mPKr<ra$vwrJz!co1lp9)QYMWv#K9pBQ)meTOfn3Ep*B6&hB(Gy#7A=d z{rBzv^zQitLx;}L_I9NE@Be%Ezq{}4?%Ves=<e(BXqw>U6}JkBHQJO8#RzO=2_ZVf zT2YVR<>ER~4RRI!I~3auU-H-thK7>!0+L=cWy-)e*<`_xOGuFPW=d;)Hiw}I*f{Cw zlvTJJK13BkV#xfWzo29b;evTpKZZ^{GCA2|>rJ+o!b3{$g9@@9p`>?0>77t|3@=lG zkQj12DJJy4R>ji|gWypL%3mSedUq*3H{7J;8Ili5?>wK4{dfHJE4{-(X-2r=L7OZX zvcEf_r<zDf{BFR_yj}U5sU1dD{28k7iq?_%z?#*qBe9l|crv%YW&heWEo)YXGO5ri z>6pqzKB!M^-nvu3%qgO&Fv_-=qj2KC_SqAEF%tMf<kg!NeQEU6!95=zJ-vi&kWZ4K zMEcw%2&a54{z=BJ|DPjg(+Iw3{cD2YOzAE#W|v_uoq?VKJy=Gb%23V@#h@Jh#u?~6 zGtfT*dJzBa)CNL1`=0_m=oSY4cKk0ZLl<bzC^g?2F`CO}glT57k?3ACI=t5$jKoKX z8Xb<L#b`R7%nph~WMm{2g;;cd#2kz#BO~#9EudtERMS~A5s4?oVA`_8=DyypjpnM* z>SAtH=oVr2?$~0+th6;0&t$Fijx8HUQb}t^WMG604JA@ZWyrKe%L-Btpg!P1&)^(k zn*5)>oXv^H>#6tbhAg#7ZehHJ<c3r%`1-@+{;aybA5+&Crk_xBqr+BYI^!?hX49!J za$hIPSqEKRf~8>IL1$aUxa^?Ml9Kk%l!H!vj?-g`PPR2B0zToOJIBqF4mw{$NbQt^ zF7F4*)(Z~0^E&fw2OR;eq)G%T5vW9<5`jttDiNqe;D3Dte$lY_*Ws~CMtDMhxmAep zL#MKy!nea?&l#s>-3qs)LB3MBJ_FFOM3DS2ajsnWaiLI{lsHYuu3UJrh|@&u%7tf( zI879<T=-HErwQ4W3!f?CG!eUU;V9$qwp)7JB&0v!uZPI{H2#_k|CtLv@4|oR!oTOl zSN^Pb{KfZ$$A1zYJ9oK%N8b_sT_{obNd1pc(D0G=XHmSu+<$<|)k&Z)BNINNe}}-j zsq9>Y?!%Nv=xPdQ8<re`xHzpK<UcRvZ}}?%H@*=bzZ`z{=eLEQo$`jY=ff|)k(~nr zmNH-z&JN0YvOdN4P&=_j?xvmLvGy*?hR4rm>%tT5JwWo`c%x9r#}K^d^>*OeZs->M zlm3N!z@*Gh=%KNLvG7FI^(&;E?x~fhP{v<j@sNK4hMojf<X50Y!{gnT!(;bd7P)y4 z_;(Wc2nkSQUwD<2kF>u;)B~V~C%P|BbOgqq2k~1V+GZXA=S=q{GI_CeV&^528vlNH z{7n8^<iMfx$)e63&>8E#q>bHospkHFfw_;8kGaYR>HZ_S*O~4-Sq1xEV*m1W6yeCu zJedsJ9%e&oqB}23lqg#NnG|fljg+3Hyi_=oHz5sU?<M-@9rP4AK_Fy(!V_DjV&R+X zWazSbeiDM;IPC~*;F)H~=Z}$r@$M-^Z%X8RQupFp;A-kj2d&Mh=2PJ_lvCLbxilhj ziM_V)_<b+A8cW3!vM*6EsDR_$SI=}`CTkbxBMKB|@MN6p5a+S(%NnY=q5JB=AG6xu z{8lx!yG~Do;V8rSeN$8_H0?vD8a{Ta;VY+hPgi)F=^&zeq15^D+_`6{uK5WVye1g? zq|u${#sicIpDETq4^Kz>HBj^8{lv^uB|n7zJ2s`|7E8j!&Z)3eL~~QN-;jOs;!>O2 zfoqvfo|aZ3j*6*bhR1Vf*^3WeFosooZMC(<1eM|}`$K!dKD8|sZ32DcOn%pIWIs}+ zk%gAEpw30Lkfkf*T2*cmUHhR^xlGZbG(I&UWY>Kei(`8*t%92~-B)S&UAz&(C_=F) zEdBRI=_*K%L0VcxAveRzI`n|&pP|)u{-1tbC|uMg?NW8VyYEQ**bPE-zN>fq`<**` z$6xE*(K-Ixo#7)bS&-k^cjN1HkI4VquTaxxU-xF0to(txzV(e?=^Ov~rt$yiEX?^) zc<i(mUiZV?f71Qqy}LW_?%dt^zE1P>;9#g>$zk}lujh1Up;066JH<PVWLJJF5vW9< z5`jttDiNqepb~*f1pbF3K+ln)>3Ad^9E^`dM9j(st#mpPOUZ21N@r6d8%acx!>M2_ zB8AomuaC_VB)(pxtwd^{m5il=xkS(!u@Y7?n_4e87nJ;XEM@D&tV}kYi<7wYc7061 zme3Y?H|$3}{rErrN}=#~fOVG(h3^8s36K_$2LV3@XuVn}RACPM)hmU<azOtt3WZI8 zj{?R3zX*63@HxQG0`9$9C_D%FQ^0e82Va9e7JHWf`vB<~EhX*V?Lylh&=%GCj7i85 zoz5PdMR~9nA;c!1T)Hhsb~XO<KQ9zUiS7^d_?vHUsJ+KHByL-{{;fAJUq)oozZ?H; z(3grtL?U_?|0_V>1IUSdJ%ayTsOK*D7v28A!=8=x)!u#$MUrKqxIBvb_X8IBp3TIT z{BMH%HSpz3oAo^(DDp3X{}#mU%})Itk}dUVv3MQ$bDjLYY5v>5ZwCK!PQK?;Mf-i= ze;WJ`l<?C<{s{QL2LIzF{3DXT3A9JRA4R)a#P9J3KH};1H-FgM?GGNQ>h`aAMBn6Z zd$>C6Upwa8?C(hW*LM2bI{hoU{J}1NbC*BR<u~NB&+o#{G1zfF-y@TiREa<(0+k3< zB2bAyB?6TQR3cD`z@J(K_*@>J!^2coCWdufV6~{g11p*K&$HnIh4Xp8MGBV>n2=wn za6b1(>kdlHf9;I|JyH@U)Zsp!L+7iA%4bl8ctP>`?4Eo^0Y0DEYnIYN$hCyZ6Hsbm zQk|>A5=^E^1!;Xm$!7yGU%|)Jp**JNRl&I2r<5F@(PRIM6`keqSVYzj@suPy7LoXq z${wBpF<)w8IcCR0@$m#i;#?19{*MOuoVVLxn`&?S0iqE73g4sPsDg(SbnE{<+~}|+ zHgDXxKDc7%KrWfh1=odEhuT_J<|MZA{#9+Ew$-7PH`;XZHfY$*X9xF!Iyx$suVwt% z^7kWhwtQEUE%a6H11_C=A!+wIL)(k?(t7dpAcV>}@~i>F^Wyw<0A9mKPk+5tzWD%E zhF3FwN@S034J>%I>b%5sDv(~K<Ge3a^cR46-a&fD7K~7S73Dv<i1O9OQT#&l6#(B4 z@$*vEN@EEGj5~l--R!dfgmEM6SFNd;pu90moVQCPU_4AESu2rdqmjhcNhD~{0o<zf z5?Ns^C$S9@X*0GH=N%GRD??V*E|Cu7F%s*LNZ1%4q*EgO#uC!$lE__#Nyw&oYay`5 z*hFGIb8ZC~HoihgSeAO!*iT5WM6yO5>D*pR=fL+HFA}n4c0a%&<6|VYwc*`B9yAKX z*(QyS8DAsh&W0Tj_@F@@uxeNR0|1i-ZM9UrcRoE{KW1zt<n9IU2RLE8i(;@_7UwY| zM>_AT*$nW65hIQ{s|CoD#v#(#Bg=Nm2oh(&ptJhV3D1uqp!*ga1E~2riQVL%brndp zaWk-LgBZ2cZd9&1>KH`53CJu>3cQE1cgU=TUnxueq->L@PZMk0|A>^J#;&KXTKyqO zssA#Wn~-_mN#p~*dgD9b8}<0{`D^SR@z;bj%#jRu{{m3YE}}Kgr@XHVoxIuCWGn#m z$CGj4o6|sf;UA1Agm11y45J1$_sx?w1298x(|G6-=WCvO4*7;V!Pk5``E-vC?f5;g z7a&KPF^lq^qk9_TLTjuhanI4a8zVwnsF1s0eF^!09Ye25yoQ__eOKV;L7?toOT)b~ z`e?{kMjwLk|8exy(Aes#e!rUR$o)-(LOY%TBQOZwBFcG=-qpB_M0@IJh<lC>&&Dw9 zRU<E^MqblO5?Le1@+)dOBzIJ$#WP@%#Wf3*#W^da_)=ncj`lZx8^cuFzz$%O26@vw z5?Us0hLugZiz{s|!cZrh%Svr73)<I*9gSzn=5<AzbAL<tVrlJWWsT=~+VMM-wZ#kV z5)O;G-y`{jQhuJ2mwV9C`v;W#!e*9lI#2R}8p0n{lZ3;NrKBDIu96Qdw&lYVM81~o znQZ})*Gamt(PdL>4A}LEiFxf523;EF%NX6;C~3!MBLvm6xDe3OuJ<?9di{(1joNHq z05eg~JmK}Puia3)uC^ED@-7#(wYNe7SIP!taXV5J+^wsLLQ=ja&FinNwbe8bjCzNa zwa}`WHj5il6S(idG`?2TdYeeTZmH;PYK2_=YKP)&3rNThTLzbiY&C?m+ZIe0l1kpu z{PC^@WGLX&r`ty(2t{pqKlwjU=^GZ5R$6z}kt$tmM5^>`cNChOF}z_xZ&QiEIWSnF zKexR2C+wilb8;P~(B*cbcY4JI>U`R7(2^PwA^2;}WzzHtV(U;e+KP7%%{8mli-<$X zT<f~lcrrSYi&;X-DdbwYfjHiD`~4!V*#o0isURLw;aQy(ilRIsla0l!!O$?3Oo}3l z5lYYUqFJ-2x33!njI8M#G~y``F;r0rde#Sol3pijJUl~beoFWJR1cig_3!K6oIdNM z?m6+aUSm9}d$KxScdPQY(vQ)k&zJDSI^KY*(r({-Qm=km_vB6*ZN{#X&^UQj$8*do zZCCX<j}Kv_(s{*2`1=zKEC=L|9@@DGEnn5<>Ge-jSZC$*`h9xM<By-zwLA2sZCCV~ z^ZLRp{T5@azez^7MMd{v#8cOH>5Gi_P?OBb>e`t8<~GV}IsL6|dcbI7)48L1)zi8^ zt5=`U^{4b%yWq!rkKXX0UNa_*+|;I58|{*Jhu*M{tks3|IYW9~RyW3|3^ikV)#GHM z=F{YLF%*75@^xEu&*SI}4@n^^VXNIIPU0d<z2cBQo7((#yVy_d*1g``Q@ZA@3wrQ+ zq-OSRGY4{mCLT@;Gc^)3Q-gyUD=VK{n_0YZxy{T(_F0mj8BV3ML0Si9@Rq0I-jj}J zEps%R7UtkcWC*W}DvJY=3|`<&MACb$v`tN0k(lj>UI$HE8S*Szhf@iwb<~QbQ>{CD z`nR{PYFo9cWmRkc_HCP2wr10jfyl^kD$_EWP7Sqyu#yHE9=?lYDwZ+_g^3qX_X@l- zIwXr`MssO1ni|O^lCmf?+C(myi4P^MSWv#ZN+q<*B}`c-Du#M`FLmrX*%inoa~UhP zO44NosH%1(idHEkd?AppyP90V5xmoiw^&Cbv0Lcf<>1D(>+EfTU`ryKOIqziR?<qx zqd+6+=y1FJ{&cWqDA<Bpwnx{s1zQFqnFGn_a5|Mt<uWa~<UKeU(2}M1V>4jN_j4&Y zSu2`NrJ)8vs4GTvB$63sc082?BRc57Wxb-Qm=)cZmFE%cNS0KM;$??K_7dtMYgSY9 zQ;r~_ig$daSUhH#u}C(eT1Rz~0lY(;8#QG_>7oZ=*;x?Q1bj~i*N*u<Sv&5EsM~%i zAv>Zifor9eOi@or<?LQcy#U^_R$^4_i`*Nh*O75jBbnMqXEZ1(aho!IVNp$Plj8}z z(wwjqlFXog+WAN}7a1uY)xc4XY&@-u(}@sUNM5yP`0?U~(2VQ8JJFlU{QUtZ&x?yP ze_x=KUL_8ewWAmJAxq_}i~EnIbf4gT%2K)^PUudGo%f0w!TWwru2;+wyuVmVuNAxx zSxU#INtt~&FTRoyEKB!`$+GkYaiT08M76nA>bFtwzHccVZ_Eds6g%$~P2zA_Iws{y z%gN6bypQbUdc{1!`^Tm9`J&wZrB^f;_j^m_F@x=JQtZ4JyVQZQbl%M_)$z*HE2T8T zyn<I5r97|TU12w!cF(R&-ZH_&R0y-1S7{rpB+>Sn2c4nK)n0VAiRgP=bP7AsdB2~H z(RU0qM;yo>r5^liW#XRzo$Q=-**_rVuWd)#94lA;6Eo0fs_z%1{W;>?GGtt-oc$-I z%-n1G&o@BVu-otMKi^UE?tXY)(y#5$Q_{}0{cSm>gdTD2IQ64qvk|vZ_56e{6N@EX zIw|>Sn}Oa9day*&M(E60P+Z&3BcPLC_X<BD>DL;1K*_t;!*pgU0Q>Io(oFK6Yp)L< zox%PWXP}>+f<F$*+6-z5;r=IJ^ORqi2EO=L}rKTC__eBEd>nG03zKbczqUx=fZ0 z#9Jj@Ar9~y@&SyO<_-rD**yG8J8E3CDmHC{le{}_w=2KAM&XAU+Z3HA*!{{5?d6hv z_pXYi=<Yos+Eb=Dxc%O*<lXxt<DdtXFDIaV<z-HS%0Hv*xc6mn$TOSC=I|y?6tf2Y z)QFi)m{IyF34IU+lg^=$6egu+4D+pw8OiMz(Ntn|#L8N+(Au^&E6WREqL7T65u6%5 zfJtyReE=UtiD1GJ%Ow&ApyI$xNM=h!d3HHHc`?nN?VVe?&F-z6One!oR0VVSO}n;s zZt2}v%8_4W0SQx4vpcLTgg0#$=H|X_U7daAww|7McJDBEbawT1lU4YOn$b*77G8eE zrK5vC<3b;AQJ;e;CH}52x;Up#^o5yH&60_lX~~JC`x7+N8mrY;Xr?Lhdou2i&$!uS z)&8UmDp>k`88eninZuD}jJ`cXOCOr6nzR6L#)4W$efh?1dmxihrsX<ddV&~t%qUBy znx=^_-l$e|%v)s)x&OJoiR1j%PH6#3X0#%dIgr3i8Zeu-;V|d0VzJVrB9z3kA%wk> z5GL89IK_OxK^n-#@m;5QOp!Xfda>#l5>k8^s|pc{9Z1534Y4YcoPAjBVVzNenBb)? z>~26o<wi%cA|wMDLN+v%0!o>T6&0bZwI3*r7f7dMF9=z~YJ?2OV2v@`hCNhl4bH<= zBoT)(TOAD}LKvoW@)|U2AU6cbNOA~cTA}geV2bmRfq}HOk1>4P%HljCSmt{2hmvT9 zhD$E)wRYn50Yg4-px9ED^8~NMKRx4TeO^Z}41(uO^0}ykK#zf)`gf^y1;gbIS<3SL zhRMCiIQ4m5!Z65!3cB^_>F6(UMu5wILiuON{`nh2?(#>Vk8Rvy{rQ{)!ypA0iONV> z*2g}kOmX~@OZLy}A%^z+%a)~IWv)p0Gvw$D1ncv<i6Q&p^0OSn`=L)~Dj4VW6~i{= z$z6Ufz!799rmWBFFovg;Ap3XM{}W2TOUdzijp3w2pX%b){|smp6ShxN5SbKouRz@G ze;mS2{h-ogII7GsaG4jMbLsOsks-^^r2m9V|AbOtxQ7)LWP1$%*`<%knVl5O@dVkW zuTb#}GS2$*`jjD`S7Ld0{JyUAx&1{@Nh)|)p$y#m-vWdDv;N_rEy?hpjTV31`ab~2 zsb5?dFSS)@KIu%{f0%Y28CvV9VP9N7^Y;hc@{BWl6}k-$eO_lDYXK37<!o#kXZq`4 zP~T<$yq@CkN%D6iY5Y-QJ#PQM1&yl6`g~4nQcavkNy(8|pJ6qWo%*6f3Afph{jdqv zW4sQ^L}ULvPYx)3w><fBCOTR}G$meSvHnd(ik)G7h6|OxOH6D~2KTratjA<J0pz9; z?=O}91Fj0VWp9~5f8jdY10D8pCb#~^8T1csu(ft`V3iTK{x+rWj^E3-+6tRz&}TaY zT}70N!7f|>1=aDE0bPxM4hP>?YCv<jkcxS_F(ZA`Wt{!mTzi|Woc@>lY>D@{6kMqI EFKNVTVE_OC literal 0 HcmV?d00001 diff --git a/t1/teste.c b/t1/teste.c new file mode 100644 index 0000000..764bb16 --- /dev/null +++ b/t1/teste.c @@ -0,0 +1,10 @@ +#include <stdio.h> +#include <stdlib.h> +/* #include "libconjunto.h" */ +/* #include "libfila.h" */ +#include "liblef.h" + +int main() { + + return 0; +} diff --git a/t1/teste.o b/t1/teste.o new file mode 100644 index 0000000000000000000000000000000000000000..fcb4c8d3b7a3c97c529677263b89f452179bc9df GIT binary patch literal 7624 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 literal 0 HcmV?d00001 -- GitLab