From 3e19a993551c999ee10e8c4533692d91858a3947 Mon Sep 17 00:00:00 2001
From: Pedro Folloni Pesserl <fpesserl7@gmail.com>
Date: Mon, 27 Feb 2023 17:38:59 -0300
Subject: [PATCH] replace tabs with spaces and remove binary files

---
 calculadora/calculadora.c | 450 +++++++++++++++----------------
 calculadora/libpilha.c    |  56 ++--
 t1/libconjunto.c          | 308 ++++++++++-----------
 t1/libfila.c              | 100 +++----
 t1/liblef.c               | 140 +++++-----
 t1/mundo.c                | 548 +++++++++++++++++++-------------------
 tp1/racionais             | Bin 20864 -> 0 bytes
 tp1/racionais.c           | 144 +++++-----
 tp2/lib_racionais.c       | 108 ++++----
 tp2/lib_racionais.h       |   4 +-
 tp2/makefile              |   2 +-
 tp2/tp2                   | Bin 20008 -> 0 bytes
 tp2/tp2.c                 |  36 +--
 tp3/lib_racionais.c       | 162 +++++------
 tp3/makefile              |   2 +-
 tp3/tp3                   | Bin 24864 -> 0 bytes
 tp3/tp3.c                 | 118 ++++----
 tp4/lib_conjunto.c        | 296 ++++++++++----------
 tp4/makefile              |   2 +-
 tp4/tp4                   | Bin 30504 -> 0 bytes
 tp4/tp4.c                 | 158 +++++------
 21 files changed, 1317 insertions(+), 1317 deletions(-)
 delete mode 100755 tp1/racionais
 delete mode 100755 tp2/tp2
 delete mode 100755 tp3/tp3
 delete mode 100755 tp4/tp4

diff --git a/calculadora/calculadora.c b/calculadora/calculadora.c
index 818b7bd..b286d17 100644
--- a/calculadora/calculadora.c
+++ b/calculadora/calculadora.c
@@ -31,22 +31,22 @@ typedef double t_operador;
    Retorna 1 se o caracter c representa um operador valido e 0 caso
    contrario. */
 int converte_operador(t_operador *op, char c) {
-	switch(c) {
-		case '+': *op = SOM; break;
-		case '-': *op = SUB; break;
-		case '*': *op = MUL; break;
-		case '/': *op = DIV; break;
-		case '^': *op = EXP; break;
-		default : return 0;
-	}
-	return 1;
+    switch(c) {
+        case '+': *op = SOM; break;
+        case '-': *op = SUB; break;
+        case '*': *op = MUL; break;
+        case '/': *op = DIV; break;
+        case '^': *op = EXP; break;
+        default : return 0;
+    }
+    return 1;
 }
 
 
 /* Retorna 1 se o operador op1 tem precedencia sobre o operador op2.
    Retorna 0 caso contrario. */
 int precedencia_maior_ou_igual(t_operador op1, t_operador op2) {
-	return floor(op1) >= floor(op2);
+    return floor(op1) >= floor(op2);
 }
 
 
@@ -54,32 +54,32 @@ int precedencia_maior_ou_igual(t_operador op1, t_operador op2) {
    operador sobre esses valores e empilha o resultado na pilha de 
    valores. */
 int opera(t_operador op, t_pilha *valores) {
-	double val_esq, val_dir;
-
-	if(!desempilha(&val_dir, valores))
-		return 0;
-	if(!desempilha(&val_esq, valores))
-		return 0;
-	if(op == SOM)
-		return empilha(val_esq + val_dir, valores);
-	if(op == SUB)
-		return empilha(val_esq - val_dir, valores);
-	if(op == MUL)
-		return empilha(val_esq * val_dir, valores);
-	if(op == DIV && val_dir != 0.0)
-		return empilha(val_esq / val_dir, valores);
-	if(op == EXP)
-		return empilha(pow(val_esq, val_dir), valores);
-
-	return 0;
+    double val_esq, val_dir;
+
+    if(!desempilha(&val_dir, valores))
+        return 0;
+    if(!desempilha(&val_esq, valores))
+        return 0;
+    if(op == SOM)
+        return empilha(val_esq + val_dir, valores);
+    if(op == SUB)
+        return empilha(val_esq - val_dir, valores);
+    if(op == MUL)
+        return empilha(val_esq * val_dir, valores);
+    if(op == DIV && val_dir != 0.0)
+        return empilha(val_esq / val_dir, valores);
+    if(op == EXP)
+        return empilha(pow(val_esq, val_dir), valores);
+
+    return 0;
 }
 
 
 /* Imprime na saida de erro (stderr) a mensagem de erro e a linha e 
    a coluna da entrada onde o erro foi detectado. */
 void erro(char *msg, int col, int *flag_erro) {
-	fprintf(stderr, "ERRO: %s (coluna %d)\n", msg, col);
-	*flag_erro = 1;
+    fprintf(stderr, "ERRO: %s (coluna %d)\n", msg, col);
+    *flag_erro = 1;
 }
 
 
@@ -90,32 +90,32 @@ void erro(char *msg, int col, int *flag_erro) {
    ne leitura ou ne alocação de memoria. */
 /*
 char* le_entrada() {
-	char *ent, *ret_realloc, *ret_fgets;
-	int tam, pos;
-
-	ent = NULL;
-	tam = 0;
-	pos = 0;
-	
-	do {
-		tam += TAM_ENTRADA;
-		ret_realloc = (char*) realloc(ent, sizeof(char) * tam);
-		if(!ret_realloc) {
-			free(ent);
-			return NULL;
-		}
-		ent = ret_realloc;
-		ent[tam - 1] = ' ';
-		ret_fgets = fgets(ent + pos, tam - pos, stdin);
-		pos = tam - 1;	
-	} while(ret_fgets && ent[tam - 1] == '\0' && ent[tam - 2] != '\n');
-	
-	if(!ret_fgets && tam == TAM_ENTRADA) {
-		free(ent);
-		return NULL;
-	}
-	
-	return ent;
+    char *ent, *ret_realloc, *ret_fgets;
+    int tam, pos;
+
+    ent = NULL;
+    tam = 0;
+    pos = 0;
+    
+    do {
+        tam += TAM_ENTRADA;
+        ret_realloc = (char*) realloc(ent, sizeof(char) * tam);
+        if(!ret_realloc) {
+            free(ent);
+            return NULL;
+        }
+        ent = ret_realloc;
+        ent[tam - 1] = ' ';
+        ret_fgets = fgets(ent + pos, tam - pos, stdin);
+        pos = tam - 1;    
+    } while(ret_fgets && ent[tam - 1] == '\0' && ent[tam - 2] != '\n');
+    
+    if(!ret_fgets && tam == TAM_ENTRADA) {
+        free(ent);
+        return NULL;
+    }
+    
+    return ent;
 }
 */
 
@@ -125,176 +125,176 @@ char* le_entrada() {
    ne leitura ou na alocação de memoria. Se o tamanho da entrada for 
    maior que o vetor de leitura, retorna NULL. */
 char* le_entrada() {
-	char *ent, *ret_fgets;
-	int tam;
-	
-	tam = TAM_ENTRADA;
-	ent = (char*) malloc(sizeof(char) * tam);
-	if(!ent)
-		return NULL;
-	ent[tam - 1] = ' ';
-	ret_fgets = fgets(ent, tam, stdin);
-	if(!ret_fgets || (ent[tam - 1] == '\0' && ent[tam - 2] != '\n')) {
-		free(ent);
-		return NULL;
-	}
-	return ent;
+    char *ent, *ret_fgets;
+    int tam;
+    
+    tam = TAM_ENTRADA;
+    ent = (char*) malloc(sizeof(char) * tam);
+    if(!ent)
+        return NULL;
+    ent[tam - 1] = ' ';
+    ret_fgets = fgets(ent, tam, stdin);
+    if(!ret_fgets || (ent[tam - 1] == '\0' && ent[tam - 2] != '\n')) {
+        free(ent);
+        return NULL;
+    }
+    return ent;
 }
 
 int main() {
-	t_pilha *pilha_valores, *pilha_operadores;
-	t_operador operador, op_topo;
-	double operando, resultado, memoria = 0.0;
-	char *entrada, *c, *prox;
-	int flag_erro = 0;
-
-	entrada = le_entrada();
-	if(!entrada) {
-		erro("erro de leitura", 0, &flag_erro);
-		return 1;
-	}
-
-	c = entrada;
-	/* Loop principal, le valores e realiza operacoes ate ler uma linha
-	   que contém "q" na primeira posição */
-	while(*c != 'q') {
-
-		pilha_valores = cria_pilha(TAM_PILHA);
-		if(!pilha_valores) {
-			erro("erro ao criar pilha de valores", 0, &flag_erro);
-			return 1;
-		}
-
-		pilha_operadores = cria_pilha(TAM_PILHA);
-		if(!pilha_operadores) {
-			erro("erro ao criar pilha de operadores", 0, &flag_erro);
-			return 1;
-		}
-
-		if( !(isdigit(*c) || *c == '('))
-			/* Se o primeiro caracter não for nem um dígito nem um abre parênteses,
-			   o formato está errado. */
-			erro("formato incorreto", c - entrada + 1, &flag_erro);
-
-		while(*c != 'q' && *c != '\n' && !flag_erro) {
-			/* Percorre o ponteiro c pela entrada até achar um q, o final da linha ou um erro. */
-
-			/* Caso 1: separadores */
-			if(*c == ' ' || *c == '\t')
-				/* Se for separador, passa para o proximo caracter. */
-				c++;
-
-			/* Caso 2: operando */
-			else if(isdigit(*c)) {
-				/* Se for [1..9] le um valor e empilha na pilha de valores. */
-				operando = strtod(c, &prox);
-				if(c == prox)
-					erro("operando incorreto", c - entrada + 1, &flag_erro);
-				else if(!empilha(operando, pilha_valores))
-					erro("pilha de valores cheia", c - entrada + 1, &flag_erro);
-				else 
-					c = prox;
-			}
-
-			/* Caso 3: abre parenteses */
-			else if(*c == '(') {
-				/* Se for abre parenteses, empilha PAR na pilha de operadores. */
-				if(!empilha(PAR, pilha_operadores))
-					erro("pilha de operadores cheia", c - entrada + 1, &flag_erro);
-				else
-					c++;
-			}
-
-			/* Caso 4: fecha parenteses */
-			else if(*c == ')') {
-				/* Se for fecha parenteses, processa a pilha de operadores até 
-				   encontar um PAR. */ 
-				while(topo(&op_topo, pilha_operadores) && op_topo != PAR && !flag_erro) {
-					desempilha(&op_topo, pilha_operadores);
-					if(!opera(op_topo, pilha_valores))
-						erro("formato incorreto", c - entrada + 1, &flag_erro);
-				}
-				if(pilha_vazia(pilha_operadores) ||
-				   (desempilha(&op_topo, pilha_operadores) && op_topo != PAR))
-					erro("formato incorreto", c - entrada + 1, &flag_erro);
-				else
-					c++;
-			}
-
-			/* Caso 5: operador */
-			else if(converte_operador(&operador, *c)) {
-				/* Se for um operador valido, verifica a precedencia em relacao
-				   ao topo da pilha de operadores. */
-				while(topo(&op_topo, pilha_operadores) &&
-					  op_topo != PAR &&
-					  precedencia_maior_ou_igual(op_topo, operador) &&
-					  !flag_erro) {
-					/* Enquando o topo da pilha tiver precedencia, desempilha e
-					   processa o operador do topo da pilha. */
-					desempilha(&op_topo, pilha_operadores);
-					if(!opera(op_topo, pilha_valores))
-						erro("formato incorreto", c - entrada + 1, &flag_erro);
-				}
-				if(!empilha(operador, pilha_operadores))
-					/* Empilha o novo operador na pilha de operadores. */
-					erro("pilha de operadores cheia", c - entrada + 1, &flag_erro);
-				else
-					c++;
-			}
-
-			/* Caso 6: memória */
-			else if(*c == 'm') {
-				/* Se for m, empilha o valor guardado na memória na pilha de valores */
-				if(!empilha(memoria, pilha_valores))
-					erro("pilha de valores cheia", c - entrada + 1, &flag_erro);
-				else
-					c++;
-			}
-
-			/* Caso 7: caracter invalido na entrada */
-			else
-				erro("caracter desconhecido", c - entrada + 1, &flag_erro);
-		}
-
-		/* Sai da leitura se encontrar um q em qualquer posição da entrada */
-		if(*c == 'q') break;
-
-		if(!flag_erro) {
-			/* Nesse ponto o processamento da entrada terminou (por enquanto sem erros)
-			   e pode ser o caso da pilha de operadores nao estar vazia. */
-			while(desempilha(&op_topo, pilha_operadores) && !flag_erro) {
-				/* Processa os operadores que restaram na pilha. */
-				if(!opera(op_topo, pilha_valores))
-					erro("formato incorreto", c - entrada + 1, &flag_erro);
-			}
-
-			/* Após o processamento, o resultado final da expressao esta no topo da 
-			   pilha de valores. A pilha deve conter apenas esse valor. */
-			if(!flag_erro) {
-				if(!desempilha(&resultado, pilha_valores) || !pilha_vazia(pilha_valores))
-					erro("formato incorreto", c - entrada + 1, &flag_erro);
-				else {
-					memoria = resultado;
-					printf("%.16g\n", resultado);
-				}
-			}
-		}
-		/* Libera a entrada e lê uma nova entrada. */
-
-		destroi_pilha(pilha_valores);
-		destroi_pilha(pilha_operadores);
-		free(entrada);
-
-		entrada = le_entrada();
-		if(!entrada)
-			erro("erro de leitura", 0, &flag_erro);
-
-		c = entrada;
-
-		flag_erro = 0;
-	}
-
-	free(entrada);
-
-	return 0;
+    t_pilha *pilha_valores, *pilha_operadores;
+    t_operador operador, op_topo;
+    double operando, resultado, memoria = 0.0;
+    char *entrada, *c, *prox;
+    int flag_erro = 0;
+
+    entrada = le_entrada();
+    if(!entrada) {
+        erro("erro de leitura", 0, &flag_erro);
+        return 1;
+    }
+
+    c = entrada;
+    /* Loop principal, le valores e realiza operacoes ate ler uma linha
+       que contém "q" na primeira posição */
+    while(*c != 'q') {
+
+        pilha_valores = cria_pilha(TAM_PILHA);
+        if(!pilha_valores) {
+            erro("erro ao criar pilha de valores", 0, &flag_erro);
+            return 1;
+        }
+
+        pilha_operadores = cria_pilha(TAM_PILHA);
+        if(!pilha_operadores) {
+            erro("erro ao criar pilha de operadores", 0, &flag_erro);
+            return 1;
+        }
+
+        if( !(isdigit(*c) || *c == '('))
+            /* Se o primeiro caracter não for nem um dígito nem um abre parênteses,
+               o formato está errado. */
+            erro("formato incorreto", c - entrada + 1, &flag_erro);
+
+        while(*c != 'q' && *c != '\n' && !flag_erro) {
+            /* Percorre o ponteiro c pela entrada até achar um q, o final da linha ou um erro. */
+
+            /* Caso 1: separadores */
+            if(*c == ' ' || *c == '\t')
+                /* Se for separador, passa para o proximo caracter. */
+                c++;
+
+            /* Caso 2: operando */
+            else if(isdigit(*c)) {
+                /* Se for [1..9] le um valor e empilha na pilha de valores. */
+                operando = strtod(c, &prox);
+                if(c == prox)
+                    erro("operando incorreto", c - entrada + 1, &flag_erro);
+                else if(!empilha(operando, pilha_valores))
+                    erro("pilha de valores cheia", c - entrada + 1, &flag_erro);
+                else 
+                    c = prox;
+            }
+
+            /* Caso 3: abre parenteses */
+            else if(*c == '(') {
+                /* Se for abre parenteses, empilha PAR na pilha de operadores. */
+                if(!empilha(PAR, pilha_operadores))
+                    erro("pilha de operadores cheia", c - entrada + 1, &flag_erro);
+                else
+                    c++;
+            }
+
+            /* Caso 4: fecha parenteses */
+            else if(*c == ')') {
+                /* Se for fecha parenteses, processa a pilha de operadores até 
+                   encontar um PAR. */ 
+                while(topo(&op_topo, pilha_operadores) && op_topo != PAR && !flag_erro) {
+                    desempilha(&op_topo, pilha_operadores);
+                    if(!opera(op_topo, pilha_valores))
+                        erro("formato incorreto", c - entrada + 1, &flag_erro);
+                }
+                if(pilha_vazia(pilha_operadores) ||
+                   (desempilha(&op_topo, pilha_operadores) && op_topo != PAR))
+                    erro("formato incorreto", c - entrada + 1, &flag_erro);
+                else
+                    c++;
+            }
+
+            /* Caso 5: operador */
+            else if(converte_operador(&operador, *c)) {
+                /* Se for um operador valido, verifica a precedencia em relacao
+                   ao topo da pilha de operadores. */
+                while(topo(&op_topo, pilha_operadores) &&
+                      op_topo != PAR &&
+                      precedencia_maior_ou_igual(op_topo, operador) &&
+                      !flag_erro) {
+                    /* Enquando o topo da pilha tiver precedencia, desempilha e
+                       processa o operador do topo da pilha. */
+                    desempilha(&op_topo, pilha_operadores);
+                    if(!opera(op_topo, pilha_valores))
+                        erro("formato incorreto", c - entrada + 1, &flag_erro);
+                }
+                if(!empilha(operador, pilha_operadores))
+                    /* Empilha o novo operador na pilha de operadores. */
+                    erro("pilha de operadores cheia", c - entrada + 1, &flag_erro);
+                else
+                    c++;
+            }
+
+            /* Caso 6: memória */
+            else if(*c == 'm') {
+                /* Se for m, empilha o valor guardado na memória na pilha de valores */
+                if(!empilha(memoria, pilha_valores))
+                    erro("pilha de valores cheia", c - entrada + 1, &flag_erro);
+                else
+                    c++;
+            }
+
+            /* Caso 7: caracter invalido na entrada */
+            else
+                erro("caracter desconhecido", c - entrada + 1, &flag_erro);
+        }
+
+        /* Sai da leitura se encontrar um q em qualquer posição da entrada */
+        if(*c == 'q') break;
+
+        if(!flag_erro) {
+            /* Nesse ponto o processamento da entrada terminou (por enquanto sem erros)
+               e pode ser o caso da pilha de operadores nao estar vazia. */
+            while(desempilha(&op_topo, pilha_operadores) && !flag_erro) {
+                /* Processa os operadores que restaram na pilha. */
+                if(!opera(op_topo, pilha_valores))
+                    erro("formato incorreto", c - entrada + 1, &flag_erro);
+            }
+
+            /* Após o processamento, o resultado final da expressao esta no topo da 
+               pilha de valores. A pilha deve conter apenas esse valor. */
+            if(!flag_erro) {
+                if(!desempilha(&resultado, pilha_valores) || !pilha_vazia(pilha_valores))
+                    erro("formato incorreto", c - entrada + 1, &flag_erro);
+                else {
+                    memoria = resultado;
+                    printf("%.16g\n", resultado);
+                }
+            }
+        }
+        /* Libera a entrada e lê uma nova entrada. */
+
+        destroi_pilha(pilha_valores);
+        destroi_pilha(pilha_operadores);
+        free(entrada);
+
+        entrada = le_entrada();
+        if(!entrada)
+            erro("erro de leitura", 0, &flag_erro);
+
+        c = entrada;
+
+        flag_erro = 0;
+    }
+
+    free(entrada);
+
+    return 0;
 }
diff --git a/calculadora/libpilha.c b/calculadora/libpilha.c
index 9a43842..b744eca 100644
--- a/calculadora/libpilha.c
+++ b/calculadora/libpilha.c
@@ -2,48 +2,48 @@
 #include "libpilha.h"
 
 t_pilha* cria_pilha(int n) {
-	t_pilha *p;
-	if ( !(p = malloc(sizeof(t_pilha) * n)) )
-		return NULL;
-
-	p->tam = n;
-	p->topo = -1;
-	
-	if ( !(p->v = malloc(sizeof(double) * n)) )
-		return NULL;
-	return p;
+    t_pilha *p;
+    if ( !(p = malloc(sizeof(t_pilha) * n)) )
+        return NULL;
+
+    p->tam = n;
+    p->topo = -1;
+    
+    if ( !(p->v = malloc(sizeof(double) * n)) )
+        return NULL;
+    return p;
 }
 
 t_pilha* destroi_pilha(t_pilha *p) {
-	free(p->v);
-	free(p);
-	return NULL;
+    free(p->v);
+    free(p);
+    return NULL;
 }
 
 int pilha_vazia(t_pilha *p) {
-	return p->topo == -1;
+    return p->topo == -1;
 }
 
 int empilha(double x, t_pilha *p) {
-	if (p->topo == p->tam)
-		return 0;
-	p->topo++;
-	p->v[p->topo] = x;
+    if (p->topo == p->tam)
+        return 0;
+    p->topo++;
+    p->v[p->topo] = x;
 
-	return 1;
+    return 1;
 }
 
 int desempilha(double *t, t_pilha *p) {
-	if (pilha_vazia(p))
-		return 0;
-	*t = p->v[p->topo];
-	p->topo--;
-	return 1;
+    if (pilha_vazia(p))
+        return 0;
+    *t = p->v[p->topo];
+    p->topo--;
+    return 1;
 }
 
 int topo(double *t, t_pilha *p) {
-	if (pilha_vazia(p))
-		return 0;
-	*t = p->v[p->topo];
-	return 1;
+    if (pilha_vazia(p))
+        return 0;
+    *t = p->v[p->topo];
+    return 1;
 }
diff --git a/t1/libconjunto.c b/t1/libconjunto.c
index daf98e3..833129e 100644
--- a/t1/libconjunto.c
+++ b/t1/libconjunto.c
@@ -6,231 +6,231 @@
  * 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;
+    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;
-	}
+    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;
+    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 *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;
+    free(c->v);
+    c->v = NULL;
+    free(c);
+    return NULL;
 }
 
 int vazio_cjt(conjunto_t *c) {
-	return cardinalidade_cjt(c) == 0;	
+    return cardinalidade_cjt(c) == 0;    
 }
 
 int cardinalidade_cjt(conjunto_t *c) {
-	return c->card;
+    return c->card;
 }
 
 int insere_cjt(conjunto_t *c, int elemento) {
-	if (cardinalidade_cjt(c) == c->max)
-		return 0;
+    if (cardinalidade_cjt(c) == c->max)
+        return 0;
 
-	if (pertence_cjt(c, elemento))
-		return 1;
+    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 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;
+    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];
-	}
+    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;
+    c->card--;
+    return 1;
 }
 
 int pertence_cjt(conjunto_t *c, int elemento) {
-	return busca_cjt(c, elemento) != -1;
+    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 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);
+    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;
+    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]);
-	}
+    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;
+    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;
+    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]);
-	}
+    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;
+    return inter;
 }
 
 conjunto_t *uniao_cjt(conjunto_t *c1, conjunto_t *c2) {
-	conjunto_t *uniao;
-	if ( !(uniao = cria_cjt(c1->max)) )
-		return NULL;
+    conjunto_t *uniao;
+    if ( !(uniao = cria_cjt(c1->max)) )
+        return NULL;
 
-	inicia_iterador_cjt(c1);
-	inicia_iterador_cjt(c2);
+    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++;
-		}
-	}
+    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;
+    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]);
-	}
+    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);
+    inicia_iterador_cjt(c1);
+    inicia_iterador_cjt(c2);
 
-	return uniao;
+    return uniao;
 }
 
 conjunto_t *copia_cjt(conjunto_t *c) {
-	conjunto_t *copia;
-	if ( !(copia = cria_cjt(c->max)) )
-		return NULL;
+    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]);
-	}
+    int i;
+    for (i = 0; i < cardinalidade_cjt(c); i++) {
+        insere_cjt(copia, c->v[i]);
+    }
 
-	return copia;
+    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)) ) {
-		free(sub);
-		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;
+    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)) ) {
+        free(sub);
+        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;
-	}
+    if (vazio_cjt(c)) {
+        printf("Conjunto vazio.\n");
+        return;
+    }
 
-	int i;
-	printf("%d", c->v[0]);
-	for (i = 1; i < cardinalidade_cjt(c); i++)
-		printf(" %d", c->v[i]);
-	printf("\n");
+    int i;
+    printf("%d", c->v[0]);
+    for (i = 1; i < cardinalidade_cjt(c); i++)
+        printf(" %d", c->v[i]);
+    printf("\n");
 }
 
 void inicia_iterador_cjt(conjunto_t *c) {
-	c->ptr = 0;
+    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;
+    *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;
+    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
index f6a067a..4a82b64 100644
--- a/t1/libfila.c
+++ b/t1/libfila.c
@@ -3,79 +3,79 @@
 #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 *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 e = 0;
+    int e = 0;
 
-	while (f->ini != NULL) {
-		retira_fila(f, &e);
-	}
+    while (f->ini != NULL) {
+        retira_fila(f, &e);
+    }
 
-	free(f);
-	return NULL;
+    free(f);
+    return NULL;
 }
 
 int vazia_fila(fila_t *f) {
-	return f->tamanho == 0;
+    return f->tamanho == 0;
 }
 
 int tamanho_fila(fila_t *f) {
-	return f->tamanho;
+    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;
+    nodo_f_t *novo;
+    if ( !(novo = malloc(sizeof(nodo_f_t))) )
+        return 0;
+    novo->elem = elemento;
+    novo->prox = NULL;
 
-	(f->tamanho)++;
+    (f->tamanho)++;
 
-	if (tamanho_fila(f) == 1) {
-		f->ini = novo;
-		f->fim = novo;
-		return 1;
-	}
+    if (tamanho_fila(f) == 1) {
+        f->ini = novo;
+        f->fim = novo;
+        return 1;
+    }
 
-	f->fim->prox = 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;
+    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;
+    if (vazia_fila(f))
+        return;
 
-	nodo_f_t *atual = f->ini;
-	printf("%d", atual->elem);
+    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");
+    int i;
+    for (i = 1; i < tamanho_fila(f); i++) {
+        atual = atual->prox;
+        printf(" %d", atual->elem);
+    }
+    
+    printf("\n");
 }
diff --git a/t1/liblef.c b/t1/liblef.c
index aaaf468..0633500 100644
--- a/t1/liblef.c
+++ b/t1/liblef.c
@@ -3,93 +3,93 @@
 #include "liblef.h"
 
 lef_t *cria_lef() {
-	lef_t *l;
-	if ( !(l = malloc(sizeof(lef_t))) )
-		return NULL;
+    lef_t *l;
+    if ( !(l = malloc(sizeof(lef_t))) )
+        return NULL;
 
-	l->Primeiro = NULL;
-	
-	return l;
+    l->Primeiro = NULL;
+    
+    return l;
 }
 
 lef_t *destroi_lef(lef_t *l) {
-	nodo_lef_t *aux;
-	while (l->Primeiro != NULL) {
-		aux = l->Primeiro;
-		l->Primeiro = l->Primeiro->prox;
-		free(aux->evento);
-		free(aux);
-	}
+    nodo_lef_t *aux;
+    while (l->Primeiro != NULL) {
+        aux = l->Primeiro;
+        l->Primeiro = l->Primeiro->prox;
+        free(aux->evento);
+        free(aux);
+    }
 
-	free(l);
+    free(l);
 
-	return NULL;
+    return NULL;
 }
 
 int adiciona_inicio_lef(lef_t *l, evento_t *evento) {
-	nodo_lef_t *novo_nodo;
-	if ( !(novo_nodo = malloc(sizeof(nodo_lef_t))) )
-		return 0;
-	
-	evento_t *novo_evento;
-	if ( !(novo_evento = malloc(sizeof(evento_t))) ) {
-		free(novo_nodo);
-		return 0;
-	}
+    nodo_lef_t *novo_nodo;
+    if ( !(novo_nodo = malloc(sizeof(nodo_lef_t))) )
+        return 0;
+    
+    evento_t *novo_evento;
+    if ( !(novo_evento = malloc(sizeof(evento_t))) ) {
+        free(novo_nodo);
+        return 0;
+    }
 
-	memcpy(novo_evento, evento, sizeof(evento_t));
+    memcpy(novo_evento, evento, sizeof(evento_t));
 
-	novo_nodo->evento = novo_evento;
+    novo_nodo->evento = novo_evento;
 
-	novo_nodo->prox = l->Primeiro;
-	l->Primeiro = novo_nodo;
+    novo_nodo->prox = l->Primeiro;
+    l->Primeiro = novo_nodo;
 
-	return 1;
+    return 1;
 }
 
 int adiciona_ordem_lef(lef_t *l, evento_t *evento) {
-	nodo_lef_t *novo_nodo;
-	if ( !(novo_nodo = malloc(sizeof(nodo_lef_t))) )
-		return 0;
-	
-	evento_t *novo_evento;
-	if ( !(novo_evento = malloc(sizeof(evento_t))) ) {
-		free(novo_nodo);
-		return 0;
-	}
-
-	memcpy(novo_evento, evento, sizeof(evento_t));
-	
-	novo_nodo->prox = l->Primeiro;
-	novo_nodo->evento = novo_evento;
-
-	if (l->Primeiro == NULL || l->Primeiro->evento->tempo > novo_nodo->evento->tempo) {
-		l->Primeiro = novo_nodo;
-		return 1;
-	}
-
-	nodo_lef_t *atual = l->Primeiro;
-	
-	while (atual->prox && atual->prox->evento->tempo < novo_nodo->evento->tempo)
-		atual = atual->prox;
-
-	novo_nodo->prox = atual->prox;
-	atual->prox = novo_nodo;
-
-	return 1;
+    nodo_lef_t *novo_nodo;
+    if ( !(novo_nodo = malloc(sizeof(nodo_lef_t))) )
+        return 0;
+    
+    evento_t *novo_evento;
+    if ( !(novo_evento = malloc(sizeof(evento_t))) ) {
+        free(novo_nodo);
+        return 0;
+    }
+
+    memcpy(novo_evento, evento, sizeof(evento_t));
+    
+    novo_nodo->prox = l->Primeiro;
+    novo_nodo->evento = novo_evento;
+
+    if (l->Primeiro == NULL || l->Primeiro->evento->tempo > novo_nodo->evento->tempo) {
+        l->Primeiro = novo_nodo;
+        return 1;
+    }
+
+    nodo_lef_t *atual = l->Primeiro;
+    
+    while (atual->prox && atual->prox->evento->tempo < novo_nodo->evento->tempo)
+        atual = atual->prox;
+
+    novo_nodo->prox = atual->prox;
+    atual->prox = novo_nodo;
+
+    return 1;
 }
 
 evento_t *obtem_primeiro_lef(lef_t *l) {
-	if (l->Primeiro == NULL)
-		return NULL;
-	
-	nodo_lef_t *aux = l->Primeiro;
-	
-	evento_t *e = l->Primeiro->evento;
-	
-	l->Primeiro = l->Primeiro->prox;
-
-	free(aux);
-
-	return e;
+    if (l->Primeiro == NULL)
+        return NULL;
+    
+    nodo_lef_t *aux = l->Primeiro;
+    
+    evento_t *e = l->Primeiro->evento;
+    
+    l->Primeiro = l->Primeiro->prox;
+
+    free(aux);
+
+    return e;
 }
diff --git a/t1/mundo.c b/t1/mundo.c
index 850765a..29d5062 100644
--- a/t1/mundo.c
+++ b/t1/mundo.c
@@ -6,11 +6,11 @@
 #include "libfila.h"
 #include "liblef.h"
 
-#define MEM_ERROR_EXIT												\
-	do {															\
-		fprintf(stderr, "Erro: não foi possível alocar memória.");	\
-		exit(1);													\
-	} while(0)
+#define MEM_ERROR_EXIT                                                \
+    do {                                                            \
+        fprintf(stderr, "Erro: não foi possível alocar memória.");    \
+        exit(1);                                                    \
+    } while(0)
 
 #define CHEGADA 0
 #define SAIDA 1
@@ -18,335 +18,335 @@
 #define FIM 3
 
 typedef struct {
-	int id;
-	int paciencia;
-	int idade;
-	int exp;
-	conjunto_t *habilidades_do_heroi;
+    int id;
+    int paciencia;
+    int idade;
+    int exp;
+    conjunto_t *habilidades_do_heroi;
 } heroi_t;
 
 typedef struct {
-	int id;
-	int lotacao_max;
-	conjunto_t *publico;
-	fila_t *fila;
-	int posx;
-	int posy;
+    int id;
+    int lotacao_max;
+    conjunto_t *publico;
+    fila_t *fila;
+    int posx;
+    int posy;
 } local_t;
 
 typedef struct {
-	int tempo_atual;
-	int tamanho_mundo; /* o mundo é um quadrado */
-	int fim_do_mundo;
-	int n_missoes;
-	conjunto_t *cj_habilidades;
-	int n_herois;
-	int n_locais;
-	heroi_t *herois;
-	local_t *locais;
+    int tempo_atual;
+    int tamanho_mundo; /* o mundo é um quadrado */
+    int fim_do_mundo;
+    int n_missoes;
+    conjunto_t *cj_habilidades;
+    int n_herois;
+    int n_locais;
+    heroi_t *herois;
+    local_t *locais;
 } mundo_t;
 
 /* retorna um inteiro aleatório entre a e b (inclusive) */
 int aleat(int a, int b) {
-	return rand() % b + 1 + a;
+    return rand() % b + 1 + a;
 }
 
 /* retorna a distancia euclidiana entre dois locais em double */
 double distancia(local_t loc1, local_t loc2) {
-	int deltax = loc2.posx - loc1.posx;
-	int deltay = loc2.posy - loc1.posy;
-	int quadrado_da_distancia = deltax * deltax + deltay * deltay;
-	return sqrt((double)quadrado_da_distancia);
+    int deltax = loc2.posx - loc1.posx;
+    int deltay = loc2.posy - loc1.posy;
+    int quadrado_da_distancia = deltax * deltax + deltay * deltay;
+    return sqrt((double)quadrado_da_distancia);
 }
 
 int max(int a, int b) {
-	return a > b ? a : b; 
+    return a > b ? a : b; 
 }
 
 int vazia_lef(lef_t *l) {
-	return l->Primeiro == NULL;
+    return l->Primeiro == NULL;
 }
 
 heroi_t inicializa_heroi(int id, conjunto_t *conjunto_de_habilidades) {
-	heroi_t h;
-	
-	h.id = id;
-	h.paciencia = aleat(0, 100);
-	h.idade = aleat(18, 100);
-	h.exp = 0;
+    heroi_t h;
+    
+    h.id = id;
+    h.paciencia = aleat(0, 100);
+    h.idade = aleat(18, 100);
+    h.exp = 0;
 
-	if ( !(h.habilidades_do_heroi = cria_subcjt_cjt(conjunto_de_habilidades, aleat(2, 5))) )
-		MEM_ERROR_EXIT;
+    if ( !(h.habilidades_do_heroi = cria_subcjt_cjt(conjunto_de_habilidades, aleat(2, 5))) )
+        MEM_ERROR_EXIT;
 
-	return h;
+    return h;
 }
 
 local_t inicializa_local(int id, int tamanho_mundo) {
-	local_t l;
-	
-	l.id = id;
-	l.lotacao_max = aleat(5, 30);
+    local_t l;
+    
+    l.id = id;
+    l.lotacao_max = aleat(5, 30);
 
-	if ( !(l.publico = cria_cjt(l.lotacao_max)) )
-		MEM_ERROR_EXIT;
+    if ( !(l.publico = cria_cjt(l.lotacao_max)) )
+        MEM_ERROR_EXIT;
 
-	if ( !(l.fila = cria_fila()) )
-		MEM_ERROR_EXIT;
+    if ( !(l.fila = cria_fila()) )
+        MEM_ERROR_EXIT;
 
-	l.posx = aleat(0, tamanho_mundo-1);
-	l.posy = aleat(0, tamanho_mundo-1);
+    l.posx = aleat(0, tamanho_mundo-1);
+    l.posy = aleat(0, tamanho_mundo-1);
 
-	return l;
+    return l;
 }
 
 mundo_t *cria_mundo(lef_t *lista_de_eventos) {
-	mundo_t *m;
-	if ( !(m = malloc(sizeof(mundo_t))) )
-		MEM_ERROR_EXIT;
-	
-	m->tempo_atual = 0;
-	m->tamanho_mundo = 20000;
-	m->fim_do_mundo = 34944;
-	m->n_missoes = m->fim_do_mundo / 100;
-
-	const int n_habilidades = 10;
-	if ( !(m->cj_habilidades = cria_cjt(n_habilidades)) )
-		MEM_ERROR_EXIT;
-	int i;
-	for (i = 0; i < n_habilidades; i++)
-		insere_cjt(m->cj_habilidades, i);
-
-	m->n_herois = n_habilidades * 5;
-	m->n_locais = m->n_herois / 6;
-
-	/* cria vetor de heróis e preenche */
-	if ( !(m->herois = malloc(m->n_herois * sizeof(heroi_t))) )
-		MEM_ERROR_EXIT;
-	for (i = 0; i < m->n_herois; i++)
-		m->herois[i] = inicializa_heroi(i, m->cj_habilidades);
-
-	/* cria vetor de locais e preenche */
-	if ( !(m->locais = malloc(m->n_locais * sizeof(local_t))) )
-		MEM_ERROR_EXIT;
-	for (i = 0; i < m->n_locais; i++)
-		m->locais[i] = inicializa_local(i, m->tamanho_mundo);
-
-	/* para cada herói, cria evento de chegada e insere na lef */
-	/* evento_t *evento_chegada_heroi; */
-	for (i = 0; i < m->n_herois; i++) {
-		evento_t evento_chegada_heroi = { aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, m->n_locais-1) };
-		adiciona_ordem_lef(lista_de_eventos, &evento_chegada_heroi);
-	}
-
-	/* para cada missao, cria evento e insere na lef */
-	for (i = 0; i < m->n_missoes; i++) {
-		evento_t evento_missao = { aleat(0, m->fim_do_mundo), MISSAO, i, 0 };
-		adiciona_ordem_lef(lista_de_eventos, &evento_missao);
-	}
-
-	/* cria evento de fim e insere na lef */
-	evento_t fim = { m->fim_do_mundo, FIM, 0, 0 };
-	adiciona_ordem_lef(lista_de_eventos, &fim);
-
-	return m;
+    mundo_t *m;
+    if ( !(m = malloc(sizeof(mundo_t))) )
+        MEM_ERROR_EXIT;
+    
+    m->tempo_atual = 0;
+    m->tamanho_mundo = 20000;
+    m->fim_do_mundo = 34944;
+    m->n_missoes = m->fim_do_mundo / 100;
+
+    const int n_habilidades = 10;
+    if ( !(m->cj_habilidades = cria_cjt(n_habilidades)) )
+        MEM_ERROR_EXIT;
+    int i;
+    for (i = 0; i < n_habilidades; i++)
+        insere_cjt(m->cj_habilidades, i);
+
+    m->n_herois = n_habilidades * 5;
+    m->n_locais = m->n_herois / 6;
+
+    /* cria vetor de heróis e preenche */
+    if ( !(m->herois = malloc(m->n_herois * sizeof(heroi_t))) )
+        MEM_ERROR_EXIT;
+    for (i = 0; i < m->n_herois; i++)
+        m->herois[i] = inicializa_heroi(i, m->cj_habilidades);
+
+    /* cria vetor de locais e preenche */
+    if ( !(m->locais = malloc(m->n_locais * sizeof(local_t))) )
+        MEM_ERROR_EXIT;
+    for (i = 0; i < m->n_locais; i++)
+        m->locais[i] = inicializa_local(i, m->tamanho_mundo);
+
+    /* para cada herói, cria evento de chegada e insere na lef */
+    /* evento_t *evento_chegada_heroi; */
+    for (i = 0; i < m->n_herois; i++) {
+        evento_t evento_chegada_heroi = { aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, m->n_locais-1) };
+        adiciona_ordem_lef(lista_de_eventos, &evento_chegada_heroi);
+    }
+
+    /* para cada missao, cria evento e insere na lef */
+    for (i = 0; i < m->n_missoes; i++) {
+        evento_t evento_missao = { aleat(0, m->fim_do_mundo), MISSAO, i, 0 };
+        adiciona_ordem_lef(lista_de_eventos, &evento_missao);
+    }
+
+    /* cria evento de fim e insere na lef */
+    evento_t fim = { m->fim_do_mundo, FIM, 0, 0 };
+    adiciona_ordem_lef(lista_de_eventos, &fim);
+
+    return m;
 }
 
 int local_lotado(int id_local, mundo_t *m) {
-	return cardinalidade_cjt(m->locais[id_local].publico) >= m->locais[id_local].lotacao_max;
+    return cardinalidade_cjt(m->locais[id_local].publico) >= m->locais[id_local].lotacao_max;
 }
 
 int heroi_tem_paciencia(int id_heroi, int id_local, mundo_t *m) {
-	return m->herois[id_heroi].paciencia/4 > tamanho_fila(m->locais[id_local].fila);
+    return m->herois[id_heroi].paciencia/4 > tamanho_fila(m->locais[id_local].fila);
 }
 
 int velocidade_heroi(heroi_t heroi) {
-	return 100 - max(0, heroi.idade - 40);
+    return 100 - max(0, heroi.idade - 40);
 }
 
 conjunto_t *escolhe_menor_equipe(conjunto_t *missao, int id_missao, mundo_t *m, local_t *local_encontrado) {
-	conjunto_t *menor;
-	if ( !(menor = cria_cjt(cardinalidade_cjt(m->cj_habilidades))) )
-		MEM_ERROR_EXIT;
-	conjunto_t *uniao_old;
-	conjunto_t *uniao;
-	int i, j, id_heroi_atual;
-	
-	for (i = 0; i < m->n_locais; i++) {
-		if (vazio_cjt(m->locais[i].publico)) continue;
-
-		/* copia o conjunto de habilidades do primeiro herói do local atual */
-		inicia_iterador_cjt(m->locais[i].publico);
-		incrementa_iterador_cjt(m->locais[i].publico, &id_heroi_atual);
-		if ( !(uniao = copia_cjt(m->herois[id_heroi_atual].habilidades_do_heroi)) )
-			MEM_ERROR_EXIT;
-
-		/* faz a união entre os conjuntos de habilidades de todos os heróis do local atual */
-		for (j = 1; j < cardinalidade_cjt(m->locais[i].publico); j++) {
-			uniao_old = uniao;
-			incrementa_iterador_cjt(m->locais[i].publico, &id_heroi_atual);
-			uniao = uniao_cjt(uniao, m->herois[id_heroi_atual].habilidades_do_heroi);
-			uniao_old = destroi_cjt(uniao_old);
-		}
-
-		printf("%6d:MISSAO %3d HAB_EQL %d:", m->tempo_atual, id_missao, m->locais[i].id);
-		imprime_cjt(uniao);
-
-		/* compara se o conjunto construído contém a missao e é menor que o achado anteriormente */
-		if (contido_cjt(missao, uniao)) {
-			if (vazio_cjt(menor) || cardinalidade_cjt(uniao) < cardinalidade_cjt(menor)) {
-				menor = destroi_cjt(menor);
-				if ( !(menor = copia_cjt(uniao)) )
-					MEM_ERROR_EXIT;
-				*local_encontrado = m->locais[i];
-			}
-		}
-		uniao = destroi_cjt(uniao);
-	}
-	
-	return menor;
+    conjunto_t *menor;
+    if ( !(menor = cria_cjt(cardinalidade_cjt(m->cj_habilidades))) )
+        MEM_ERROR_EXIT;
+    conjunto_t *uniao_old;
+    conjunto_t *uniao;
+    int i, j, id_heroi_atual;
+    
+    for (i = 0; i < m->n_locais; i++) {
+        if (vazio_cjt(m->locais[i].publico)) continue;
+
+        /* copia o conjunto de habilidades do primeiro herói do local atual */
+        inicia_iterador_cjt(m->locais[i].publico);
+        incrementa_iterador_cjt(m->locais[i].publico, &id_heroi_atual);
+        if ( !(uniao = copia_cjt(m->herois[id_heroi_atual].habilidades_do_heroi)) )
+            MEM_ERROR_EXIT;
+
+        /* faz a união entre os conjuntos de habilidades de todos os heróis do local atual */
+        for (j = 1; j < cardinalidade_cjt(m->locais[i].publico); j++) {
+            uniao_old = uniao;
+            incrementa_iterador_cjt(m->locais[i].publico, &id_heroi_atual);
+            uniao = uniao_cjt(uniao, m->herois[id_heroi_atual].habilidades_do_heroi);
+            uniao_old = destroi_cjt(uniao_old);
+        }
+
+        printf("%6d:MISSAO %3d HAB_EQL %d:", m->tempo_atual, id_missao, m->locais[i].id);
+        imprime_cjt(uniao);
+
+        /* compara se o conjunto construído contém a missao e é menor que o achado anteriormente */
+        if (contido_cjt(missao, uniao)) {
+            if (vazio_cjt(menor) || cardinalidade_cjt(uniao) < cardinalidade_cjt(menor)) {
+                menor = destroi_cjt(menor);
+                if ( !(menor = copia_cjt(uniao)) )
+                    MEM_ERROR_EXIT;
+                *local_encontrado = m->locais[i];
+            }
+        }
+        uniao = destroi_cjt(uniao);
+    }
+    
+    return menor;
 }
 
 void trata_evento_chegada(int id_heroi, int id_local, mundo_t *m, lef_t *lista_de_eventos) {
-	printf("%6d:CHEGA HEROI %2d Local %d (%2d/%2d), ",
-			m->tempo_atual,
-			id_heroi,
-			id_local,
-			cardinalidade_cjt(m->locais[id_local].publico),
-			m->locais[id_local].lotacao_max);
-
-	if (local_lotado(id_local, m)) {
-		if (heroi_tem_paciencia(id_heroi, id_local, m)) {
-			insere_fila(m->locais[id_local].fila, id_heroi);
-			printf("FILA %d\n", tamanho_fila(m->locais[id_local].fila));
-			return;
-		}
-
-		printf("DESISTE\n");
-		evento_t saida = { m->tempo_atual, SAIDA, id_heroi, id_local };
-		adiciona_ordem_lef(lista_de_eventos, &saida);
-		return;
-	}
-
-	printf("ENTRA\n");
-	insere_cjt(m->locais[id_local].publico, id_heroi);
-	int t_permanencia_local = max(1, m->herois[id_heroi].paciencia/10 + aleat(-2,6));
-	evento_t saida = { m->tempo_atual + t_permanencia_local, SAIDA, id_heroi, id_local };
-	adiciona_ordem_lef(lista_de_eventos, &saida);
+    printf("%6d:CHEGA HEROI %2d Local %d (%2d/%2d), ",
+            m->tempo_atual,
+            id_heroi,
+            id_local,
+            cardinalidade_cjt(m->locais[id_local].publico),
+            m->locais[id_local].lotacao_max);
+
+    if (local_lotado(id_local, m)) {
+        if (heroi_tem_paciencia(id_heroi, id_local, m)) {
+            insere_fila(m->locais[id_local].fila, id_heroi);
+            printf("FILA %d\n", tamanho_fila(m->locais[id_local].fila));
+            return;
+        }
+
+        printf("DESISTE\n");
+        evento_t saida = { m->tempo_atual, SAIDA, id_heroi, id_local };
+        adiciona_ordem_lef(lista_de_eventos, &saida);
+        return;
+    }
+
+    printf("ENTRA\n");
+    insere_cjt(m->locais[id_local].publico, id_heroi);
+    int t_permanencia_local = max(1, m->herois[id_heroi].paciencia/10 + aleat(-2,6));
+    evento_t saida = { m->tempo_atual + t_permanencia_local, SAIDA, id_heroi, id_local };
+    adiciona_ordem_lef(lista_de_eventos, &saida);
 }
 
 void trata_evento_saida(int id_heroi, int id_local, mundo_t *m, lef_t *lista_de_eventos) {
-	printf("%6d:SAIDA HEROI %2d Local %d (%2d/%2d)",
-			m->tempo_atual,
-			id_heroi,
-			id_local,
-			cardinalidade_cjt(m->locais[id_local].publico),
-			m->locais[id_local].lotacao_max);
-
-	if (pertence_cjt(m->locais[id_local].publico, id_heroi)) {
-		retira_cjt(m->locais[id_local].publico, id_heroi);
-		if (!vazia_fila(m->locais[id_local].fila)) {
-			int id_heroi_fila;
-			retira_fila(m->locais[id_local].fila, &id_heroi_fila);
-			printf(", REMOVE FILA HEROI %d", id_heroi_fila);
-			evento_t chegada_heroi_fila = { m->tempo_atual, CHEGADA, id_heroi_fila, id_local };
-			adiciona_inicio_lef(lista_de_eventos, &chegada_heroi_fila);
-		}
-	}
-	printf("\n");
-
-	int id_local_destino = aleat(0, m->n_locais-1);
-	int t_deslocamento = distancia(m->locais[id_local], m->locais[id_local_destino]) / velocidade_heroi(m->herois[id_heroi]);
-	evento_t chegada_heroi = { m->tempo_atual + t_deslocamento/15, CHEGADA, id_heroi, id_local_destino };
-	adiciona_ordem_lef(lista_de_eventos, &chegada_heroi);
+    printf("%6d:SAIDA HEROI %2d Local %d (%2d/%2d)",
+            m->tempo_atual,
+            id_heroi,
+            id_local,
+            cardinalidade_cjt(m->locais[id_local].publico),
+            m->locais[id_local].lotacao_max);
+
+    if (pertence_cjt(m->locais[id_local].publico, id_heroi)) {
+        retira_cjt(m->locais[id_local].publico, id_heroi);
+        if (!vazia_fila(m->locais[id_local].fila)) {
+            int id_heroi_fila;
+            retira_fila(m->locais[id_local].fila, &id_heroi_fila);
+            printf(", REMOVE FILA HEROI %d", id_heroi_fila);
+            evento_t chegada_heroi_fila = { m->tempo_atual, CHEGADA, id_heroi_fila, id_local };
+            adiciona_inicio_lef(lista_de_eventos, &chegada_heroi_fila);
+        }
+    }
+    printf("\n");
+
+    int id_local_destino = aleat(0, m->n_locais-1);
+    int t_deslocamento = distancia(m->locais[id_local], m->locais[id_local_destino]) / velocidade_heroi(m->herois[id_heroi]);
+    evento_t chegada_heroi = { m->tempo_atual + t_deslocamento/15, CHEGADA, id_heroi, id_local_destino };
+    adiciona_ordem_lef(lista_de_eventos, &chegada_heroi);
 }
 
 void trata_evento_missao(int id_missao, mundo_t *m, lef_t *lista_de_eventos) {
-	conjunto_t *missao;
-	if ( !(missao = cria_subcjt_cjt(m->cj_habilidades, aleat(3, 6))) )
-		MEM_ERROR_EXIT;
-
-	printf("%6d:MISSAO %3d HAB_REQ ", m->tempo_atual, id_missao);
-	imprime_cjt(missao);
-
-	local_t local_encontrado;
-	conjunto_t *equipe_escolhida = escolhe_menor_equipe(missao, id_missao, m, &local_encontrado);
-
-	printf("%6d:MISSAO %3d ", m->tempo_atual, id_missao);
-	if (vazio_cjt(equipe_escolhida)) {
-		printf("IMPOSSIVEL\n");
-		evento_t nova_tentativa = { aleat(m->tempo_atual, m->fim_do_mundo), MISSAO, id_missao, 0 };
-		adiciona_ordem_lef(lista_de_eventos, &nova_tentativa);
-	} else {
-		printf("HER_EQS %d:", local_encontrado.id);
-		imprime_cjt(local_encontrado.publico);
-
-		int id_heroi_encontrado;
-		inicia_iterador_cjt(local_encontrado.publico);
-		int i;
-		for (i = 0; i < cardinalidade_cjt(local_encontrado.publico); i++) {
-			incrementa_iterador_cjt(local_encontrado.publico, &id_heroi_encontrado);
-			(m->herois[id_heroi_encontrado].exp)++;
-		}
-	}
-	missao = destroi_cjt(missao);
-	equipe_escolhida = destroi_cjt(equipe_escolhida);
+    conjunto_t *missao;
+    if ( !(missao = cria_subcjt_cjt(m->cj_habilidades, aleat(3, 6))) )
+        MEM_ERROR_EXIT;
+
+    printf("%6d:MISSAO %3d HAB_REQ ", m->tempo_atual, id_missao);
+    imprime_cjt(missao);
+
+    local_t local_encontrado;
+    conjunto_t *equipe_escolhida = escolhe_menor_equipe(missao, id_missao, m, &local_encontrado);
+
+    printf("%6d:MISSAO %3d ", m->tempo_atual, id_missao);
+    if (vazio_cjt(equipe_escolhida)) {
+        printf("IMPOSSIVEL\n");
+        evento_t nova_tentativa = { aleat(m->tempo_atual, m->fim_do_mundo), MISSAO, id_missao, 0 };
+        adiciona_ordem_lef(lista_de_eventos, &nova_tentativa);
+    } else {
+        printf("HER_EQS %d:", local_encontrado.id);
+        imprime_cjt(local_encontrado.publico);
+
+        int id_heroi_encontrado;
+        inicia_iterador_cjt(local_encontrado.publico);
+        int i;
+        for (i = 0; i < cardinalidade_cjt(local_encontrado.publico); i++) {
+            incrementa_iterador_cjt(local_encontrado.publico, &id_heroi_encontrado);
+            (m->herois[id_heroi_encontrado].exp)++;
+        }
+    }
+    missao = destroi_cjt(missao);
+    equipe_escolhida = destroi_cjt(equipe_escolhida);
 }
 
 void trata_evento_fim(mundo_t *m, lef_t **lista_de_eventos) {
-	printf("%6d:FIM\n", m->tempo_atual);
-	int i;
-	for (i = 0; i < m->n_herois; i++) {
-		printf("HEROI %2d EXPERIENCIA %2d\n", m->herois[i].id, m->herois[i].exp);
-		m->herois[i].habilidades_do_heroi = destroi_cjt(m->herois[i].habilidades_do_heroi);
-	}
-
-	for (i = 0; i < m->n_locais; i++) {
-		m->locais[i].publico = destroi_cjt(m->locais[i].publico);
-		m->locais[i].fila = destroi_fila(m->locais[i].fila);
-	}
-
-	free(m->herois);
-	free(m->locais);
-	m->cj_habilidades = destroi_cjt(m->cj_habilidades);
-	free(m);
-	*lista_de_eventos = destroi_lef(*lista_de_eventos);
+    printf("%6d:FIM\n", m->tempo_atual);
+    int i;
+    for (i = 0; i < m->n_herois; i++) {
+        printf("HEROI %2d EXPERIENCIA %2d\n", m->herois[i].id, m->herois[i].exp);
+        m->herois[i].habilidades_do_heroi = destroi_cjt(m->herois[i].habilidades_do_heroi);
+    }
+
+    for (i = 0; i < m->n_locais; i++) {
+        m->locais[i].publico = destroi_cjt(m->locais[i].publico);
+        m->locais[i].fila = destroi_fila(m->locais[i].fila);
+    }
+
+    free(m->herois);
+    free(m->locais);
+    m->cj_habilidades = destroi_cjt(m->cj_habilidades);
+    free(m);
+    *lista_de_eventos = destroi_lef(*lista_de_eventos);
 }
 
 int main() {
-	srand(time(0));
-
-	lef_t *lista_de_eventos;
-	if ( !(lista_de_eventos = cria_lef()) )
-		MEM_ERROR_EXIT;
-
-	mundo_t *mundo = cria_mundo(lista_de_eventos);
-	
-	evento_t *evento_atual;
-	/* ciclo da simulação */
-	while ( lista_de_eventos && (evento_atual = obtem_primeiro_lef(lista_de_eventos)) ) {
-		mundo->tempo_atual = evento_atual->tempo;
-
-		/* trata o evento e atualiza estado do sistema */
-		switch (evento_atual->tipo) {
-			case CHEGADA:
-				trata_evento_chegada(evento_atual->dado1, evento_atual->dado2, mundo, lista_de_eventos);
-				break;
-
-			case SAIDA:
-				trata_evento_saida(evento_atual->dado1, evento_atual->dado2, mundo, lista_de_eventos);
-				break;
-
-			case MISSAO:
-				trata_evento_missao(evento_atual->dado1, mundo, lista_de_eventos);
-				break;
-
-			case FIM:
-				trata_evento_fim(mundo, &lista_de_eventos);
-				break;
-		}
-
-		free(evento_atual);
-	}
-
-	return 0;
+    srand(time(0));
+
+    lef_t *lista_de_eventos;
+    if ( !(lista_de_eventos = cria_lef()) )
+        MEM_ERROR_EXIT;
+
+    mundo_t *mundo = cria_mundo(lista_de_eventos);
+    
+    evento_t *evento_atual;
+    /* ciclo da simulação */
+    while ( lista_de_eventos && (evento_atual = obtem_primeiro_lef(lista_de_eventos)) ) {
+        mundo->tempo_atual = evento_atual->tempo;
+
+        /* trata o evento e atualiza estado do sistema */
+        switch (evento_atual->tipo) {
+            case CHEGADA:
+                trata_evento_chegada(evento_atual->dado1, evento_atual->dado2, mundo, lista_de_eventos);
+                break;
+
+            case SAIDA:
+                trata_evento_saida(evento_atual->dado1, evento_atual->dado2, mundo, lista_de_eventos);
+                break;
+
+            case MISSAO:
+                trata_evento_missao(evento_atual->dado1, mundo, lista_de_eventos);
+                break;
+
+            case FIM:
+                trata_evento_fim(mundo, &lista_de_eventos);
+                break;
+        }
+
+        free(evento_atual);
+    }
+
+    return 0;
 }
diff --git a/tp1/racionais b/tp1/racionais
deleted file mode 100755
index fade14e44c4c6ed2ce5398a66f99b87aa28bff97..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20864
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
TwD!xdzif*kvD>0xLD_!-SqV^J

diff --git a/tp1/racionais.c b/tp1/racionais.c
index 8b097f1..a9de61e 100644
--- a/tp1/racionais.c
+++ b/tp1/racionais.c
@@ -1,106 +1,106 @@
 #include <stdio.h>
 
 typedef struct rac {
-	int num;
-	int den;
+    int num;
+    int den;
 } racional;
 
 int mdc(int a, int b) {
-	int resto;
-	if (a != 0 && b != 0) {
-		resto = a % b;
-		while (resto) {
-			a = b;
-			b = resto;
-			resto = a % b;
-		}
-		return b;
-	}
-	return 0;
+    int resto;
+    if (a != 0 && b != 0) {
+        resto = a % b;
+        while (resto) {
+            a = b;
+            b = resto;
+            resto = a % b;
+        }
+        return b;
+    }
+    return 0;
 }
 
 racional le_racional() {
-	racional r;
-	scanf("%d %d", &r.num, &r.den);
-	
-	return r;
+    racional r;
+    scanf("%d %d", &r.num, &r.den);
+    
+    return r;
 }
 
 racional multiplica_rs(racional r, racional s) {
-	racional p;
-	p.num = r.num * s.num;
-	p.den = r.den * s.den;
+    racional p;
+    p.num = r.num * s.num;
+    p.den = r.den * s.den;
 
-	return p;
+    return p;
 }
 
 racional divide_rs(racional r, racional s) {
-	racional p;
-	p.num = r.num * s.den;
-	p.den = r.den * s.num;
+    racional p;
+    p.num = r.num * s.den;
+    p.den = r.den * s.num;
 
-	return p;
+    return p;
 }
 
 racional soma_rs(racional r, racional s) {
-	racional p;
-	p.den = r.den * s.den;
-	p.num = r.num * s.den + s.num * r.den;
+    racional p;
+    p.den = r.den * s.den;
+    p.num = r.num * s.den + s.num * r.den;
 
-	return p;
+    return p;
 }
 
 racional subtrai_rs(racional r, racional s) {
-	racional p;
-	p.den = r.den * s.den;
-	p.num = r.num * s.den - s.num * r.den;
-	
-	return p;
+    racional p;
+    p.den = r.den * s.den;
+    p.num = r.num * s.den - s.num * r.den;
+    
+    return p;
 }
 
 void formata_racional(racional r) {
-	int fator = mdc(r.num, r.den);
-	
-	if (fator) {
-		r.num /= fator;
-		r.den /= fator;
-	}
-
-	if (!r.num) {
-		printf("0\n");
-	} else {
-		if (r.den == 1) {
-			printf("%d\n", r.num);
-		} else {
-			printf("%d/%d\n", r.num, r.den);
-		}
-	}
-	return;
+    int fator = mdc(r.num, r.den);
+    
+    if (fator) {
+        r.num /= fator;
+        r.den /= fator;
+    }
+
+    if (!r.num) {
+        printf("0\n");
+    } else {
+        if (r.den == 1) {
+            printf("%d\n", r.num);
+        } else {
+            printf("%d/%d\n", r.num, r.den);
+        }
+    }
+    return;
 }
 
 int valida_racional(racional r) {
-	if (!r.den) return 0;
-	return 1;
+    if (!r.den) return 0;
+    return 1;
 }
 
 int main() {
-	racional r = le_racional();
-	racional s = le_racional();
-	while(valida_racional(s) && valida_racional(r)) {
-		racional soma = soma_rs(r, s);
-		formata_racional(soma);
-
-		racional subtracao = subtrai_rs(r, s);
-		formata_racional(subtracao);
-
-		racional multiplicacao = multiplica_rs(r, s);
-		formata_racional(multiplicacao);
-
-		racional divisao = divide_rs(r, s);
-		formata_racional(divisao);
-		
-		r = le_racional();
-		if (r.den) { s = le_racional(); }
-	}
-	return 0;
+    racional r = le_racional();
+    racional s = le_racional();
+    while(valida_racional(s) && valida_racional(r)) {
+        racional soma = soma_rs(r, s);
+        formata_racional(soma);
+
+        racional subtracao = subtrai_rs(r, s);
+        formata_racional(subtracao);
+
+        racional multiplicacao = multiplica_rs(r, s);
+        formata_racional(multiplicacao);
+
+        racional divisao = divide_rs(r, s);
+        formata_racional(divisao);
+        
+        r = le_racional();
+        if (r.den) { s = le_racional(); }
+    }
+    return 0;
 }
diff --git a/tp2/lib_racionais.c b/tp2/lib_racionais.c
index c963f12..01aeefa 100644
--- a/tp2/lib_racionais.c
+++ b/tp2/lib_racionais.c
@@ -2,82 +2,82 @@
 #include "lib_racionais.h"
 
 int mdc(int a, int b) {
-	int resto;
-	if (a != 0 && b != 0) { resto = a % b;
-		while (resto) {
-			a = b;
-			b = resto;
-			resto = a % b;
-		}
-		return b;
-	}
-	return 0;
+    int resto;
+    if (a != 0 && b != 0) { resto = a % b;
+        while (resto) {
+            a = b;
+            b = resto;
+            resto = a % b;
+        }
+        return b;
+    }
+    return 0;
 }
 
 racional le_racional() {
-	racional r;
-	scanf("%d %d", &r.num, &r.den);
-	
-	return r;
+    racional r;
+    scanf("%d %d", &r.num, &r.den);
+    
+    return r;
 }
 
 racional multiplica_rs(racional r, racional s) {
-	racional p;
-	p.num = r.num * s.num;
-	p.den = r.den * s.den;
+    racional p;
+    p.num = r.num * s.num;
+    p.den = r.den * s.den;
 
-	return p;
+    return p;
 }
 
 racional divide_rs(racional r, racional s) {
-	racional p;
-	p.num = r.num * s.den;
-	p.den = r.den * s.num;
+    racional p;
+    p.num = r.num * s.den;
+    p.den = r.den * s.num;
 
-	return p;
+    return p;
 }
 
 racional soma_rs(racional r, racional s) {
-	racional p;
-	p.den = r.den * s.den;
-	p.num = r.num * s.den + s.num * r.den;
+    racional p;
+    p.den = r.den * s.den;
+    p.num = r.num * s.den + s.num * r.den;
 
-	return p;
+    return p;
 }
 
 racional subtrai_rs(racional r, racional s) {
-	racional p;
-	p.den = r.den * s.den;
-	p.num = r.num * s.den - s.num * r.den;
-	
-	return p;
+    racional p;
+    p.den = r.den * s.den;
+    p.num = r.num * s.den - s.num * r.den;
+    
+    return p;
 }
 
 void formata_racional(racional r) {
-	int fator = mdc(r.num, r.den);
-	
-	if (fator) {
-		r.num /= fator;
-		r.den /= fator;
-	}
-	
-	if (!r.den) {
-		printf("Erro: divisao por 0\n");
-	} else {
-		if (!r.num) {
-			printf("0\n");
-		} else {
-			if (r.den == 1) {
-				printf("%d\n", r.num);
-			} else {
-				printf("%d/%d\n", r.num, r.den);
-			}
-		}
-	}
-	return;
+    int fator = mdc(r.num, r.den);
+    
+    if (fator) {
+        r.num /= fator;
+        r.den /= fator;
+    }
+    
+    if (!r.den) {
+        printf("Erro: divisao por 0\n");
+    } else {
+        if (!r.num) {
+            printf("0\n");
+        } else {
+            if (r.den == 1) {
+                printf("%d\n", r.num);
+            } else {
+                printf("%d/%d\n", r.num, r.den);
+            }
+        }
+    }
+    return;
 }
 
 int valida_racional(racional r) {
-	if (!r.den) return 0;
-	return 1;
+    if (!r.den) return 0;
+    return 1;
 }
diff --git a/tp2/lib_racionais.h b/tp2/lib_racionais.h
index 25a5008..d9d952d 100644
--- a/tp2/lib_racionais.h
+++ b/tp2/lib_racionais.h
@@ -1,6 +1,6 @@
 typedef struct {
-	int num;
-	int den;
+    int num;
+    int den;
 } racional;
 
 /* le um numero racional (dois inteiros) */
diff --git a/tp2/makefile b/tp2/makefile
index 469a707..0ef8fa4 100644
--- a/tp2/makefile
+++ b/tp2/makefile
@@ -13,4 +13,4 @@ lib_racionais.o: lib_racionais.c
 	$(CC) -c $(OPCOES) lib_racionais.c
 
 clean:
-		rm -f ./*.o
+	rm -f ./*.o tp2
diff --git a/tp2/tp2 b/tp2/tp2
deleted file mode 100755
index a4ec5df262670455c83caa0ee4715d1f517c43b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20008
zcmeHPeQ;dWb-!;{Pg+U#N?5j$k-^W#9@~Ic>kn+%$ap17_R0}h7>i(vd0y?Vq$Sd>
zvLB93@YF$uVe6Q{Owzz$lC))}lzxP?)0vbqjj1VL!=$EZfN4vkW=tXnH*o@P%wW9z
zoqO+Dy?t8I$v^zj**mj)?)jaMd+xdKy}kFnclY;u`nG!vLvZnmn+0)48Wj@Kf{`9w
z0SSqAQIGFy#WGP1zDi<B9#RBSRYp9e)TePTDA_%u<!-uI>oMgBiIUxHB}f6GFcrEV
zWM`5<^KSaCcFL6H#r7;RMzQ2~kv^y6XX>=0P^May{?wLIy5E%-wj-GAE^51r+K%ZY
z1%$$s^GV^;=OyjeO}ohmg(>M$>3=U9qxuaNaWm=t3KmS+?l#!zRBMe-C!F@(y1m)*
z(yZfWs=F)NMiYY@*0+tuT1OMf+`-m^?HgJ*tPf;Tfwi*V^U*vVQ#)=Q5bcY-hqr&@
zuEfuGKEHKa!)o8-``3R=aZ?QBk94SzzHUy^TJR)S{rU=OLJ&sf&G-+;RIU8?0>Jai
zh~mJkGC0LjPXFpz@O87`6s3iayBGk<`F|9+<yHp29G_)naADhtOe(r*lbwl1l0#xV
zm(9>ubR?1%<LN{)I|P;J!H7MSNJd5z_r<|ttfF=%8%byFu}C5*h^L|2Aa?Zic5SoQ
z1~wLJYXdh5yLZnmb}XKb4<|C&czVw*+eTB#_@2n%D0v$mOC_~8Td9^+RAcGENYa?{
z*c#yI(#6N$m5Ib$lJ3%2?y3Za*dzApzVms?=hglzl;FHR4;i;K9ttTr<IKOaRpE3j
zQ9N8G9k{$6X~C2Ocb-@09XPi^CKnwzAESgfhv-{~8hq#&;9`YTjd02hmsKHEBb?7|
zLV_XsR(?oUDU}RVGEm7tB?FZVR5DP>KqUkJKQa)WIOhu=Gv93!BK+XVtfz1~Jn@q6
zRIzh~8-EH>VZ|AIH!KOEM*IlL&rTLlR{R_BG}SzNTJrxwJWYAeo|OFS#M6}X>~oTT
z0Q?XwLu6U=-@W-a?+NFB8lE_FzJE{OadR`Kq2c3me*}~8@hvYxtFT}LY(8vQ(k-FK
zz=V&Re?Vl@#q0uv@25J#uPsbAEIC4sPiYDl5vhOUT|`!24(HE@U;O3P@QW9{VdLfS
zo0qfm;o!Z1a^NdW4#{@d{>YZ4uoJnqf$+qZm!T!X`S-GO!pF9FfKRoeOH(8GdfEI4
zLSrA>F+KZb2nS$;L<hf5kxlg@S>b%o#bZ5}9z5A_^bKH2uu%!lpZz;(=Gegb@UfnY
z;rv_S{3}yWDcKaDDdImOzEtIVN@Wr%lce(2Ock$Ec?T-*kjmf8RH;)cr=fD1R2~KY
zgF1@axLhcxKp&y_xCdFk0uL#Wf<8}%7hs4XL3XJVuS~rs`GyCtMM9*-Yo{nL`NQY(
zxv7c6=R|hh#NjECZ9Ud=?up+Xp2`ngdVe8$o9{V?Oyzr~rtyixmqhLiWbd2O(?015
z8Ey<8M`OqPt0c|8jL~0$<(>-gi=Pw<6pU&&oIi|2<|dB~!0}|mcmI+4Gk~Vf$oeJH
z)P9|sN~$!KRawnxKhpo1{F@Emef8MDB>DjN#;a(oTmx=1=pMTTA;Rd*)u&61CeB&Z
z2O0BJ{w-wqFEK#*o=cRS?0jSgS)9%rYVdyU!IL>ZveGaI0~)$iD7?Q5iW>A2cs+re
zp*eBU$Td^`DT^2CIg2eMze=}CqW>(41VoP(v#XBpT#ZaV1`5M3_MPhdeBbdcsntSs
z-qD+Xt8<_?f1z_vXa3Sa_;~Anz_<6U{)DbcQ_+txS}%U$&9<!h_l6~+FaMjq{4cxn
zKkqEe|4De_lo8(aZtfR!t@^!vop*Qc>%6Da#yKbG$|bL9C08+kl~Tz-B?FZVR5DP>
zKqUi}3{)~u$v`Coct+$AD`M7)nCMBTQ=6?=;y@x3Nm=8mv=tOV$m;NEBO;6z?@b4h
zGe15b{;E)T3AFosp>Pg#59rrHH~qR$sKQkLw%-&A%R!$6?FM}fGzR(s=uyzCKPVKQ
z2HgYt5@;Uu4Cu-aVUN29-Jr`sp9UQTrRTd;jQe&A<6xuFGN;D(s8Q2MIK3nAeZ+G;
zDd<vOUp?m}{Z-KKCtZKzc7OBEhWao0j)<*S-E`f$<;w^rd)#gi{m^qhcO%=o@o7bW
zn-Q<*^fx}_**3S@+hial8O!~ES0E2NL5p%v4~eDx1mIne)7^xkJR!wW{sQ2AkYDGN
z$EW500etvV<d-1-BIFyL_UUQ+#fbZ1$ZvGY$EW2TkUs_ax14g%6H;L@u)85|!8p>h
z>SFwNDtpS={g5|9zK`Tx{>HC)di~9hczgWT@v0vGs;`>e{@_E^VSoEX%?^L)UVnS1
zKiKJC)#bOk{LRqs^84iTS~@O*@B>mQl?+reP{}|g1C<O^GEm7tB?FZVR5I{8WPsme
z<o6bNPEGGdQo*AiRrHIJcxoogzv_k5BF*#rku93%wb50Y=l3LOoj`@<7cLi4lBXxZ
zDE#iDRi$`-=P{_|^u&?Mvx?w-b5)u(rT1-}MVko`QYe;;vh3HC*Ms~n<CPjetpj1a
zQS%)4Nv+54SaSP#Iwku9u~fyQH_1=x{@@{}<T=k+E=vA&E&oXK#kh4lpEcq4%H8d5
z(8s}cP4CcjNK@7ig;Z_Fwr!iORo(HyL?mgg2?o{%*0gR|t!viW;Mz68HEV+62576H
zQ3;Og*J$NZnteK`(qE1&D*eOyo#qcXuMS<RTEJC?eFhy;QtivAlxxW2t4ToQsj5j5
zF?`Pv@zlH_x$3``ocR+FZ<UERorT9|o>DS;LSN<c7`2b0VkUEAu&e$&>cWi0lfvVb
zOqHm<9T9k{yrYoR`~$v>DwEXQ;TR`;X<?Z4<j(Whh%W=iubBO{Pv|63qg3i*_%dqe
zDEXarza@5#X8Y^T65F8JaNRS+&eLoN%+nZvDnW~Toudtik#git?q31>taH?dSd4y|
zqucd4D{nI(6ypR94CSf+8l5LmdnM_&SO0AjL@4r>1*mbN1_IJ;w>VAPNp+JP7|&y)
zqUK)WgLNc6qRr(U5ovy#HV^8i?xZ0JUZ;HZ*N+Qh4G)&636Q5%(o?VYv=LsY7$=_8
zo>sN!K*-aol@3p<r#;b59K({HmS|7%E|By@Z%|N|tg9WKtkn)rOQ${2O&X(Fdb*%b
znrTmMI0VR3^HPVW=2nNNMMY0@>dDg;($g#2le}{!W3u6?9-ihE_2-VoqI{V15w#P#
zRB)I_Ae&34fakHheS=`;E9TC+Rn(4I93Ql4tnfG0d;Kl`D~x$HjaR~Exu~zd84ylM
zUBz{ws>!IY-&}uF{ib>YNi*jPuTQbPP3`#Ms9q?%eg<$J28^wXrUCLDYW~A6{KEOx
zJ1jl8)YsM{h<W&JsDq^Ff+U|!bSoG2HmUf&*|muJ<}=+9Iy<v+QL!_mJR|6OcmL)%
zt+^?rf~@CCnNDO$Am}~)EPF*8<-z#aKNsI}4;hW1$d0cKL?NMVA9gwtO{9{ML?$po
zkTB<nS`T0S7MRsX&6>AOv%_q{RnmCCtReEY*|gX6`i9Ns7bID%$U;e8Fl)YJ`rbCH
zJIwi{ywmh~$KNt*o;R;iYzvX+&06og2TWtH$Aj3ug1Ee56PlkHZE29R$9*N@=EHe`
zX?_Ps8QK{#EfCL;Sxe;GW_8=JSvPFfK55o{!K}Rt0hrA}({t3U_5I8=K4%7lX8j9h
zQ-|5uVfs4E`YqG-+M7w?hW|_9x>*!j?liCMFs%-=8J+{C^42<=az`2EYlEi$?@iOU
z%&Z;$w(0vL8W!*8OpkXCW%EFQQeH)TE%Ao}W=)4_?lnEWdrb2>kcUiTskt<0`X<P7
z0i|cBS)1cQP=^KfURm4PH@PPUR_j<cmyB;2jwj>kL=<c!9Ua-Cc6nK?!&Yl18`~1y
z6tr50BAG+U=tw%1Oyx4Ix#X7;$yjTa_6lW0CN&lj*gG_A<&v4ia55gV=y$tqBsCUq
z8;nNV#)rn&u5Ig&$I_{`f$jaf+xmC!+Oejsc$C^}g?<7eiXP-vC$*1>Jd?xBNGhEz
zZ9_pM9LtSn6XT<aXe1g*iA-)V3-_pz<5=8IXT&JJ)p;>0hEnOVNH#JJq~n<^%+M35
zT5=9W#ZV-hN{a*7X%%zWOgBk3s>uXZKec#qvhu!5r=k~AG~Pd0ihISBn!Pz;oLW`F
zS7svX#Vnua^G*XVcGy{Z9$bpo2%aC8;yy81R=-y8e7#h^PVl_G6vvN2qZ3heFIGQR
zS$wV-FN^z&`(vHnyrMzydZ`qL6U&LHx>sCL+;{1eda-lwnX>v#g4bWA`tt>^yGro|
zqTKx6D;5ggpH`}mpV*KSQFX6q7VTy6MIu}l=ha}TFR$QLqZ{Ydq8sO_pBulX6wsVk
zESZ7h%8#S-*9Es=4ge3HWIpE_U(75dKIy`jYMj^4>~A9~hM3L+wMS(eJ_ep5y2s^S
z;M6X!$4QsU0elQGb9}!6yj=WG&VtX@-#?fB=ZU{qhKj3{^RLz#O*7(u9kzy;d0hQS
z`kWd6&m=zcIR8lcnR&b|!1cvLt9@7g8_=<N$lGbXDBwIVk+^K6<ZGSQcP}Eg0k=vt
z74y2pXCCLa_T!$7CnP@8(S2IqJ?DNHcq7gu_xZAj^gT1L8(*8n{~v4r?sdkqv*^DH
zoZ5Atzdr_EE)Vn!p7QKo5&a7I6`1&jLZyAaL^utWcE*?KdW<9a8Q0?_p9RD8pYUnK
z`O+Uk#Zi99?doyAUdvkGhxFZfTdDo?RFZEX+@NvyN~K-mjs|u0Hm&boKn?<@{<_;u
z0=H(m5f5uWJVo58b-oIGSs8s1O=mON+|UrF%F{ca?d+HxrM=G??0b%-?BUVWU}V&e
z;Ws~HM{);6G&MFp8qdaKfna$J+J>F5Bk6SHkR4BE(}%=RIx-fwW4W=hLoji0HZ-#(
zs%nbno)O#j_T8Pg^w>SOcH7v1U1}B+cK6;}J8$XTRw|LZzX4&sXZM7)hj909VejbM
z)z#T&@7lio_MScVp3bhm9`cG-qjoftlO5n4<{{oMPP@e2lb%o8H9kGpq7CaMZc67$
zc07jJm)^-<qQ^6^8Qa-Qv@lFGd*kkw>{WNn!=RQ)*&~r;jJCA*?t(!qk+gG}I1)JB
zcN!7!gPDx>sHUBc>0;@2{9-5@XU-#S8~f;a&}f5w*<JIrSTEhbU-U^i7lF*7F-)#O
zvuQ;~xQ4lIJUuP~$y7ET7*6H_gSiC$pCJ*`P-j;!=H<ge%0?oY5fO+TO2VI_*|d@z
zh^I4HB9<^VWa;>5gbZ|Td^9TpGCu)S1H&n>+4w<x(-9A)lpM%Fd_*7PBQZE(PMNBM
zU0HA)Ekwo=Q8b^*l4k@*2Sfm4AObku#&8w^ix1|8VG>CW<J{D2A~}@edSq}g9Y4Sv
z{-Yw!b)>7@`Tsj&G;_iw62FbA@VuR=dj>_i&T=gny2s7-JilkU+^LK@U&k5VfQr+e
z*8xl|R@BsO-wphKaL=3D=k)?pZeQPiFFrS5x3{8#SwS&=URN+ZuNC>Guex1~_mDJx
z2PiF3xP40p$n;sQ$Hbk#dmx~D`fShZ6sG)qf#YXAreA<PJtJU#Qn$}Es2g_2&+*)c
z3YoAyuX~uD)Qa4`yZ=YEeV5kb^%2wk4tvbXiuvdKJpzn!Lh;F>f2ZlEp9<MHi|$?#
z%A@AAx3nG8{-UO;xZI1cyX<*g#+3WZZkT8Kl*|5zZh+}+u7J6H_V*_)dtT=;tz|_`
zUGBu6X?q?&VQEE8dA_4jIo4b!`aOIoe{6q)1qOxb{faGqyW9T(Bu;x?Uo!QvW9@<S
z#tvUYh1N!N4pHHCDF2U-Tc3HRKZZ>MK5WnHqVuifZTfgq+%(Vj{{;aZdu-3^TK=D;
zN$MO5AD?W;<M=paq{8;R{(Xn;VWO;3r1;JDOn(81(_VzMYEaR3%`#y-rXN7ywCDMF
zySC>z-S*7WdWn2-{5&rWYkO{o^>sR!6_-&XOsf}hwqIF9RE6!C(&H4aJ5^KK;eIEG
zx?6YQEcXAb?cd;zX+LiJWwY2nxn3EZa2dE*5uC+-BmJ<UtaBazZu<^x@6O-7df;;|
z17@An)r4$!lI}{QJWfBZC`<8KhYyb@Uw><Xxl#l~h=ZMyh(C2X=XRBp)@bGJX-_qk
K9WDbGEB+V#4$9F0

diff --git a/tp2/tp2.c b/tp2/tp2.c
index f9206db..8e204fe 100644
--- a/tp2/tp2.c
+++ b/tp2/tp2.c
@@ -2,26 +2,26 @@
 #include "lib_racionais.h"
 
 int main() {
-	racional r, s;
-	r = le_racional();
-	if (r.den) { s = le_racional(); }
-	while(valida_racional(s) && valida_racional(r)) {
-		racional soma = soma_rs(r, s);
-		formata_racional(soma);
+    racional r, s;
+    r = le_racional();
+    if (r.den) { s = le_racional(); }
+    while(valida_racional(s) && valida_racional(r)) {
+        racional soma = soma_rs(r, s);
+        formata_racional(soma);
 
-		racional subtracao = subtrai_rs(r, s);
-		formata_racional(subtracao);
+        racional subtracao = subtrai_rs(r, s);
+        formata_racional(subtracao);
 
-		racional multiplicacao = multiplica_rs(r, s);
-		formata_racional(multiplicacao);
+        racional multiplicacao = multiplica_rs(r, s);
+        formata_racional(multiplicacao);
 
-		racional divisao = divide_rs(r, s);
-		formata_racional(divisao);
-		
-		printf("\n");
+        racional divisao = divide_rs(r, s);
+        formata_racional(divisao);
+        
+        printf("\n");
 
-		r = le_racional();
-		if (r.den) { s = le_racional(); }
-	}
-	return 0;
+        r = le_racional();
+        if (r.den) { s = le_racional(); }
+    }
+    return 0;
 }
diff --git a/tp3/lib_racionais.c b/tp3/lib_racionais.c
index 256f18d..cac1700 100644
--- a/tp3/lib_racionais.c
+++ b/tp3/lib_racionais.c
@@ -3,134 +3,134 @@
 #include "lib_racionais.h"
 
 int aleat(int min, int max) {
-	return (rand() % (max - min + 1) + min);
+    return (rand() % (max - min + 1) + min);
 }
 
 racional *criar_r() {
-	racional *r;
-	if ( !(r = malloc(sizeof(racional))) )
-		return NULL;
-	return r;
+    racional *r;
+    if ( !(r = malloc(sizeof(racional))) )
+        return NULL;
+    return r;
 }
 
 racional *liberar_r(racional *r) {
-	free(r);
-	r = NULL;
-	return r;
+    free(r);
+    r = NULL;
+    return r;
 }
 
 racional *sortear_r() {
-	racional *r;
-	r = criar_r();
-	r->num = aleat(0, 100);
-	r->den = aleat(1, 100);
-	simplifica_r(r);
-	return r;
+    racional *r;
+    r = criar_r();
+    r->num = aleat(0, 100);
+    r->den = aleat(1, 100);
+    simplifica_r(r);
+    return r;
 }
 
 int ler_r(racional *r) {
-	if (!scanf("%d %d", &r->num, &r->den))
-		return 0;
-	if (!r->den)
-		return 0;
-	return 1;	
+    if (!scanf("%d %d", &r->num, &r->den))
+        return 0;
+    if (!r->den)
+        return 0;
+    return 1;    
 }
 
 void imprimir_r(racional *r) {
-	if (!r->num) {
-		printf("0");
-		return;
-	}
-	if (r->den == 1) {
-		printf("%d", r->num);
-		return;
-	}
-	printf("%d/%d", r->num, r->den);
-	return;
+    if (!r->num) {
+        printf("0");
+        return;
+    }
+    if (r->den == 1) {
+        printf("%d", r->num);
+        return;
+    }
+    printf("%d/%d", r->num, r->den);
+    return;
 }
  
 int mdc(int a, int b) {
-	int r;
-	while (b) {
-		r = a % b;
-		a = b;
-		b = r;
-	}
-	return a;
+    int r;
+    while (b) {
+        r = a % b;
+        a = b;
+        b = r;
+    }
+    return a;
 }
 
 int mmc(int a, int b) {
-	if (a && b)
-		return ((a * b) / mdc(a, b));
-	return 0;
+    if (a && b)
+        return ((a * b) / mdc(a, b));
+    return 0;
 }
 
 int valido_r(racional *r) {
-	if (r->den)
-		return 1;
-	return 0;
+    if (r->den)
+        return 1;
+    return 0;
 }
 
 void simplifica_r(racional *r) {
-	int fator = mdc(r->num, r->den);
-	if (fator) {
-		r->num /= fator;
-		r->den /= fator;
-	}
+    int fator = mdc(r->num, r->den);
+    if (fator) {
+        r->num /= fator;
+        r->den /= fator;
+    }
 }
 
 int menor_r(racional *r1, racional *r2) {
-	int a = r1->num * r2->den;
-	int b = r1->den * r2->num;
-	if (a < b)
-		return 1;
-	return 0;
+    int a = r1->num * r2->den;
+    int b = r1->den * r2->num;
+    if (a < b)
+        return 1;
+    return 0;
 }
 
 int iguais_r(racional *r1, racional *r2) {
-	int a = r1->num * r2->den;
-	int b = r1->den * r2->num;
-	if (a == b)
-		return 1;
-	return 0;
+    int a = r1->num * r2->den;
+    int b = r1->den * r2->num;
+    if (a == b)
+        return 1;
+    return 0;
 }
 
 racional *somar_r(racional *r1, racional *r2) {
-	racional *soma;
-	soma = criar_r();
+    racional *soma;
+    soma = criar_r();
 
-	soma->den = r1->den * r2->den;
-	soma->num = r1->num * r2->den + r2->num * r1->den;
-	simplifica_r(soma);
-	return soma;
+    soma->den = r1->den * r2->den;
+    soma->num = r1->num * r2->den + r2->num * r1->den;
+    simplifica_r(soma);
+    return soma;
 }
 
 racional *subtrair_r(racional *r1, racional *r2) {
-	racional *dif;
-	dif = criar_r();
+    racional *dif;
+    dif = criar_r();
 
-	dif->den = r1->den * r2->den;
-	dif->num = r1->num * r2->den - r2->num * r1->den;
-	simplifica_r(dif);
-	return dif;
+    dif->den = r1->den * r2->den;
+    dif->num = r1->num * r2->den - r2->num * r1->den;
+    simplifica_r(dif);
+    return dif;
 }
 
 racional *multiplicar_r(racional *r1, racional *r2) {
-	racional *mult;
-	mult = criar_r();
+    racional *mult;
+    mult = criar_r();
 
-	mult->den = r1->den * r2->den;
-	mult->num = r1->num * r2->num;
-	simplifica_r(mult);
-	return mult;
+    mult->den = r1->den * r2->den;
+    mult->num = r1->num * r2->num;
+    simplifica_r(mult);
+    return mult;
 }
 
 racional *dividir_r(racional *r1, racional *r2) {
-	racional *div;
-	div = criar_r();
+    racional *div;
+    div = criar_r();
 
-	div->den = r1->den * r2->num;
-	div->num = r1->num * r2->den;
-	simplifica_r(div);
-	return div;
+    div->den = r1->den * r2->num;
+    div->num = r1->num * r2->den;
+    simplifica_r(div);
+    return div;
 }
diff --git a/tp3/makefile b/tp3/makefile
index 15fd51f..cf6df46 100644
--- a/tp3/makefile
+++ b/tp3/makefile
@@ -13,4 +13,4 @@ tp3.o: tp3.c
 	$(CC) -c $(CFLAGS) tp3.c
 
 clean:
-	rm -f *.o
+	rm -f *.o tp3
diff --git a/tp3/tp3 b/tp3/tp3
deleted file mode 100755
index fc1b47b817382d93324d309d114179727e25dc02..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 24864
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

diff --git a/tp3/tp3.c b/tp3/tp3.c
index da2d13f..c50baab 100644
--- a/tp3/tp3.c
+++ b/tp3/tp3.c
@@ -6,88 +6,88 @@
 
 /* le um inteiro na faixa [0..MAX-1] */
 int ler_tamanho() {
-	printf("Insira o tamanho do vetor (entre 0 e %d):\n", MAX-1);
-	int n;
-	scanf("%d", &n);
-	while (n < 0 || n > MAX-1) {
-		printf("Por favor, insira um inteiro entre 0 e %d:\n", MAX-1);
-		scanf("%d", &n);
-	}
-	return n;
+    printf("Insira o tamanho do vetor (entre 0 e %d):\n", MAX-1);
+    int n;
+    scanf("%d", &n);
+    while (n < 0 || n > MAX-1) {
+        printf("Por favor, insira um inteiro entre 0 e %d:\n", MAX-1);
+        scanf("%d", &n);
+    }
+    return n;
 }
 
 /* imprime os racionais apontados pelo vetor de ponteiros para racionais */
 void imprimir_vetor_racional(racional **vet, int tam) {
-	int i;
-	for (i = 0; i < tam-1; i++) {
-		imprimir_r(*(vet + i));
-		printf(" ");
-	}
-	imprimir_r(*(vet + tam-1));     /* por motivos de formatacao da saida, */
-	printf("\n");				    /* imprime o ultimo numero separadamente */
+    int i;
+    for (i = 0; i < tam-1; i++) {
+        imprimir_r(*(vet + i));
+        printf(" ");
+    }
+    imprimir_r(*(vet + tam-1));     /* por motivos de formatacao da saida, */
+    printf("\n");                    /* imprime o ultimo numero separadamente */
 }
 
 /* retorna um vetor de tam ponteiros para numeros racionais validos gerados aleatoriamente */
 /* retorna NULL em caso de falha */
 racional **aleatorio_vetor_racional(int tam) {
-	racional **vet;
-	if ( !(vet = malloc(tam * sizeof(racional*))) )
-		return NULL;
-	int i;
-	for (i = 0; i < tam; i++)
-		*(vet + i) = sortear_r();
-	return vet;
+    racional **vet;
+    if ( !(vet = malloc(tam * sizeof(racional*))) )
+        return NULL;
+    int i;
+    for (i = 0; i < tam; i++)
+        *(vet + i) = sortear_r();
+    return vet;
 }
 
 /* inverte dois ponteiros para racional */
 void inverte_ponteiros(racional **r1, racional **r2) {
-	racional *temp = *r1;
-	*r1 = *r2;
-	*r2 = temp;
+    racional *temp = *r1;
+    *r1 = *r2;
+    *r2 = temp;
 }
 
 /* retorna um vetor de tam ponteiros para numeros racionais que apontam em ordem crescente para os 
  * racionais apontados pelo vetor recebido no parametro. */
 /* essa funcao eh uma implementacao do bubble sort */
 racional **ordenar_vetor_racional(racional **vet, int tam) {
-	racional **ord;
-	if ( !(ord = malloc(tam * sizeof(racional*))) )
-		return NULL;
-	int i;
-	for (i = 0; i < tam; i++) {
-		*(ord + i) = *(vet + i);
-	}
+    racional **ord;
+    if ( !(ord = malloc(tam * sizeof(racional*))) )
+        return NULL;
+    int i;
+    for (i = 0; i < tam; i++) {
+        *(ord + i) = *(vet + i);
+    }
 
-	int swaps = 1;
-	while (swaps) {
-		swaps = 0;
-		for (i = 0; i < tam-1; i++) {
-			if (menor_r(*(ord + i+1), *(ord + i))) {
-				inverte_ponteiros((ord + i+1), (ord + i));
-				swaps++;
-			}
-		}
-		tam--;
-	}
-	return ord;
+    int swaps = 1;
+    while (swaps) {
+        swaps = 0;
+        for (i = 0; i < tam-1; i++) {
+            if (menor_r(*(ord + i+1), *(ord + i))) {
+                inverte_ponteiros((ord + i+1), (ord + i));
+                swaps++;
+            }
+        }
+        tam--;
+    }
+    return ord;
 }
 
 /* libera a memoria alocada em um vetor vet de tam ponteiros para numeros racionais,
  * e libera todos os ponteiros dentro dele */
 racional **liberar_vetor_racional(racional **vet, int tam) {
-	int i;
-	for (i = 0; i < tam; i++) {
-		free(*(vet + i));
-		*(vet + i) = NULL;
-	}
-	free(vet);
-	vet = NULL;
-	return vet;
+    int i;
+    for (i = 0; i < tam; i++) {
+        free(*(vet + i));
+        *(vet + i) = NULL;
+    }
+    free(vet);
+    vet = NULL;
+    return vet;
 }
 
 int main() {
-	/* inicializa semente randomica */
-	srand(time(0));
+    /* inicializa semente randomica */
+    srand(time(0));
 
     racional **v, **w;
     /* v e w são vetores de ponteiros para racionais (racional *) */
@@ -95,8 +95,8 @@ int main() {
     int tam;
     /* ler o tamanho do vetor de racionais */
     if (!(tam = ler_tamanho()))
-		return 0;  /* impede de passar 0 como um parametro para malloc */
-	
+        return 0;  /* impede de passar 0 como um parametro para malloc */
+    
     /* aloca v com tam ponteiros para racional */
     v = aleatorio_vetor_racional(tam);
     /* a funcao acima retorna NULL em caso de falha */
@@ -109,9 +109,9 @@ int main() {
     imprimir_vetor_racional(w, tam);
 
     /* libera toda memoria alocada dinamicamente */
-	v = liberar_vetor_racional(v, tam);
-	free(w);   /* o vetor w pode ser liberado normalmente, porque os ponteiros que apontam para numeros */
-	w = NULL;  /* racionais ja foram liberados na chamada de liberar_vetor_racional para v. */
+    v = liberar_vetor_racional(v, tam);
+    free(w);   /* o vetor w pode ser liberado normalmente, porque os ponteiros que apontam para numeros */
+    w = NULL;  /* racionais ja foram liberados na chamada de liberar_vetor_racional para v. */
 
     return 0;
 }
diff --git a/tp4/lib_conjunto.c b/tp4/lib_conjunto.c
index b88f1db..9b3b8e5 100644
--- a/tp4/lib_conjunto.c
+++ b/tp4/lib_conjunto.c
@@ -6,228 +6,228 @@
  * 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;
+    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;
-	}
+    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;
+    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 *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;
+    free(c->v);
+    c->v = NULL;
+    free(c);
+    return NULL;
 }
 
 int vazio_cjt(conjunto_t *c) {
-	return cardinalidade_cjt(c) == 0;	
+    return cardinalidade_cjt(c) == 0;    
 }
 
 int cardinalidade_cjt(conjunto_t *c) {
-	return c->card;
+    return c->card;
 }
 
 int insere_cjt(conjunto_t *c, int elemento) {
-	if (cardinalidade_cjt(c) == c->max)
-		return 0;
+    if (cardinalidade_cjt(c) == c->max)
+        return 0;
 
-	if (pertence_cjt(c, elemento))
-		return 1;
+    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 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;
+    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];
-	}
+    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;
+    c->card--;
+    return 1;
 }
 
 int pertence_cjt(conjunto_t *c, int elemento) {
-	return busca_cjt(c, elemento) != -1;
+    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 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);
+    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;
+    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]);
-	}
+    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;
+    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;
+    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]);
-	}
+    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;
+    return inter;
 }
 
 conjunto_t *uniao_cjt(conjunto_t *c1, conjunto_t *c2) {
-	conjunto_t *uniao;
-	if ( !(uniao = cria_cjt(c1->max)) )
-		return NULL;
+    conjunto_t *uniao;
+    if ( !(uniao = cria_cjt(c1->max)) )
+        return NULL;
 
-	inicia_iterador_cjt(c1);
-	inicia_iterador_cjt(c2);
+    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++;
-		}
-	}
+    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;
+    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]);
-	}
+    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);
+    inicia_iterador_cjt(c1);
+    inicia_iterador_cjt(c2);
 
-	return uniao;
+    return uniao;
 }
 
 conjunto_t *copia_cjt(conjunto_t *c) {
-	conjunto_t *copia;
-	if ( !(copia = cria_cjt(c->max)) )
-		return NULL;
+    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]);
-	}
+    int i;
+    for (i = 0; i < cardinalidade_cjt(c); i++) {
+        insere_cjt(copia, c->v[i]);
+    }
 
-	return copia;
+    return copia;
 }
 
 conjunto_t *cria_subcjt_cjt(conjunto_t *c, int n) {
-	if (n >= cardinalidade_cjt(c))
-		return copia_cjt(c);
+    if (n >= cardinalidade_cjt(c))
+        return copia_cjt(c);
 
-	conjunto_t *sub;
-	if ( !(sub = cria_cjt(c->max)) )
-		return NULL;
+    conjunto_t *sub;
+    if ( !(sub = cria_cjt(c->max)) )
+        return NULL;
 
-	conjunto_t *disponiveis;
-	if ( !(disponiveis = copia_cjt(c)) )
-		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;
+    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;
-	}
+    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]);
+    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;
+    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;
+    *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;
+    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/tp4/makefile b/tp4/makefile
index e8d1210..9ea2d67 100644
--- a/tp4/makefile
+++ b/tp4/makefile
@@ -18,4 +18,4 @@ tp4.o: tp4.c
 	$(CC) -c $(CFLAGS) tp4.c
 
 clean:
-	rm -f $(objects)
+	rm -f $(objects) tp4
diff --git a/tp4/tp4 b/tp4/tp4
deleted file mode 100755
index 20a040c28befaad663997ebf45fbef3595571709..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 30504
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
Km+>&6+W!EflkaN)

diff --git a/tp4/tp4.c b/tp4/tp4.c
index 9f4e3ec..83470dd 100644
--- a/tp4/tp4.c
+++ b/tp4/tp4.c
@@ -4,105 +4,105 @@
 #define MAX 100
 
 conjunto_t *le_conjunto_simples(int max) {
-	conjunto_t *leitura;
-	if ( !(leitura = cria_cjt(max)) )
-		return NULL;
-	int n;
-	scanf("%d", &n);
-	while (n) {
-		insere_cjt(leitura, n);
-		scanf("%d", &n);
-	}
-	return leitura;
+    conjunto_t *leitura;
+    if ( !(leitura = cria_cjt(max)) )
+        return NULL;
+    int n;
+    scanf("%d", &n);
+    while (n) {
+        insere_cjt(leitura, n);
+        scanf("%d", &n);
+    }
+    return leitura;
 }
 
 conjunto_t **le_vetor_conjuntos(int *tam, int max) {
-	conjunto_t **vetor_c;
-	if ( !(vetor_c = malloc(sizeof(conjunto_t *) * max)) )
-		return NULL;
-	int n, m;
-	scanf("%d", &n);
-	while (n) {
-		if ( !(vetor_c[*tam] = cria_cjt(15)) )
-			return NULL;
-		insere_cjt(vetor_c[*tam], n);
-		scanf("%d", &m);
-		while (m) {
-			insere_cjt(vetor_c[*tam], m);
-			scanf("%d", &m);
-		}
-		*tam = *tam + 1;
-		scanf("%d", &n);
-	}
-	return vetor_c;
+    conjunto_t **vetor_c;
+    if ( !(vetor_c = malloc(sizeof(conjunto_t *) * max)) )
+        return NULL;
+    int n, m;
+    scanf("%d", &n);
+    while (n) {
+        if ( !(vetor_c[*tam] = cria_cjt(15)) )
+            return NULL;
+        insere_cjt(vetor_c[*tam], n);
+        scanf("%d", &m);
+        while (m) {
+            insere_cjt(vetor_c[*tam], m);
+            scanf("%d", &m);
+        }
+        *tam = *tam + 1;
+        scanf("%d", &n);
+    }
+    return vetor_c;
 }
 
 conjunto_t **libera_vetor_conjuntos(conjunto_t **vetor_c, int tam) {
-	int i;
-	for (i = 0; i < tam; i++)
-		vetor_c[i] = destroi_cjt(vetor_c[i]);
-	free(vetor_c);
-	return NULL;
+    int i;
+    for (i = 0; i < tam; i++)
+        vetor_c[i] = destroi_cjt(vetor_c[i]);
+    free(vetor_c);
+    return NULL;
 }
 
 conjunto_t *acha_solucao(conjunto_t **herois, conjunto_t *missao, conjunto_t **equipes, int tam_equipes) {
-	conjunto_t *menor;
-	menor = cria_cjt(15);
-	conjunto_t *uniao_old;
-	conjunto_t *uniao;
-	int i, j;
-	
-	for (i = 0; i < tam_equipes; i++) {
-		uniao = copia_cjt(herois[equipes[i]->v[0] - 1]);
-		/* copia o conjunto de habilidades de heroi	correspondente ao primeiro elemento do conjunto equipe da posicao atual do vetor de equipes. ex: se a equipe atual é [5 6 7], copia o quinto conjunto de habilidades de heroi (de indice 4). */
-		for (j = 1; j < cardinalidade_cjt(equipes[i]); j++) {
-			uniao_old = uniao;
-			uniao = uniao_cjt(uniao, herois[equipes[i]->v[j] - 1]);
-			uniao_old = destroi_cjt(uniao_old);
-			/* realiza a uniao de todos os conjuntos de habilidades de heroi referenciados no conjunto equipe da posicao atual do vetor de equipes. */
-		}
-		if (contido_cjt(missao, uniao)) {
-			if (vazio_cjt(menor) || cardinalidade_cjt(equipes[i]) < cardinalidade_cjt(menor)) {
-				menor = destroi_cjt(menor);
-				menor = copia_cjt(equipes[i]);
-			}
-		}
-		uniao = destroi_cjt(uniao);
-	}
-	
-	return menor;
+    conjunto_t *menor;
+    menor = cria_cjt(15);
+    conjunto_t *uniao_old;
+    conjunto_t *uniao;
+    int i, j;
+    
+    for (i = 0; i < tam_equipes; i++) {
+        uniao = copia_cjt(herois[equipes[i]->v[0] - 1]);
+        /* copia o conjunto de habilidades de heroi    correspondente ao primeiro elemento do conjunto equipe da posicao atual do vetor de equipes. ex: se a equipe atual é [5 6 7], copia o quinto conjunto de habilidades de heroi (de indice 4). */
+        for (j = 1; j < cardinalidade_cjt(equipes[i]); j++) {
+            uniao_old = uniao;
+            uniao = uniao_cjt(uniao, herois[equipes[i]->v[j] - 1]);
+            uniao_old = destroi_cjt(uniao_old);
+            /* realiza a uniao de todos os conjuntos de habilidades de heroi referenciados no conjunto equipe da posicao atual do vetor de equipes. */
+        }
+        if (contido_cjt(missao, uniao)) {
+            if (vazio_cjt(menor) || cardinalidade_cjt(equipes[i]) < cardinalidade_cjt(menor)) {
+                menor = destroi_cjt(menor);
+                menor = copia_cjt(equipes[i]);
+            }
+        }
+        uniao = destroi_cjt(uniao);
+    }
+    
+    return menor;
 }
 
 int main() {
     /* ler os herois e suas habilidades */
-	int tam_herois = 0;
-	conjunto_t **vetor_herois;
-	vetor_herois = le_vetor_conjuntos(&tam_herois, MAX);
-	
+    int tam_herois = 0;
+    conjunto_t **vetor_herois;
+    vetor_herois = le_vetor_conjuntos(&tam_herois, MAX);
+    
     /* ler a missao */
-	conjunto_t *missao;
-	missao = le_conjunto_simples(20);
-	
+    conjunto_t *missao;
+    missao = le_conjunto_simples(20);
+    
     /* ler as equipes de herois */
-	int tam_equipes = 0;
-	conjunto_t **vetor_equipes;
-	vetor_equipes = le_vetor_conjuntos(&tam_equipes, MAX);
+    int tam_equipes = 0;
+    conjunto_t **vetor_equipes;
+    vetor_equipes = le_vetor_conjuntos(&tam_equipes, MAX);
 
     /* a solucao eh encontrada se a missao esta contido na uniao das 
      * habilidades de uma equipe, mas tomando-se aquela de menor tamanho. */
-	conjunto_t *solucao;
-	solucao = acha_solucao(vetor_herois, missao, vetor_equipes, tam_equipes);
-	if (vazio_cjt(solucao)) {
-		printf("NENHUMA\n");
-	} else {
-		imprime_cjt(solucao);
-	}
+    conjunto_t *solucao;
+    solucao = acha_solucao(vetor_herois, missao, vetor_equipes, tam_equipes);
+    if (vazio_cjt(solucao)) {
+        printf("NENHUMA\n");
+    } else {
+        imprime_cjt(solucao);
+    }
 
     /* libera toda a memoria alocada dinamicamente */
-	vetor_herois = libera_vetor_conjuntos(vetor_herois, tam_herois);
-	missao = destroi_cjt(missao);
-	vetor_equipes = libera_vetor_conjuntos(vetor_equipes, tam_equipes);
-	solucao = destroi_cjt(solucao);
+    vetor_herois = libera_vetor_conjuntos(vetor_herois, tam_herois);
+    missao = destroi_cjt(missao);
+    vetor_equipes = libera_vetor_conjuntos(vetor_equipes, tam_equipes);
+    solucao = destroi_cjt(solucao);
 
     return 0;
 }
-- 
GitLab