diff --git a/tp3/makefile b/tp3/makefile
index cf6df46afc6a6c6bf57638b8707f3782b26a4776..15fd51f5434d4fc387f77322b78da3a4fea647cf 100644
--- a/tp3/makefile
+++ b/tp3/makefile
@@ -13,4 +13,4 @@ tp3.o: tp3.c
 	$(CC) -c $(CFLAGS) tp3.c
 
 clean:
-	rm -f *.o tp3
+	rm -f *.o
diff --git a/tp3/tp3 b/tp3/tp3
new file mode 100755
index 0000000000000000000000000000000000000000..5ed200ef4059a631b90617d1ae6bf71858e94880
Binary files /dev/null and b/tp3/tp3 differ
diff --git a/tp3/tp3.c b/tp3/tp3.c
index a988fce3f6dc0b3c9f0c2c13f31c3959063410fe..434343a2ceec21c748ea084c010a61b34ccf084a 100644
--- a/tp3/tp3.c
+++ b/tp3/tp3.c
@@ -5,28 +5,53 @@
 
 /* le um inteiro na faixa [0..MAX-1] */
 int ler_tamanho() {
-	printf("Insira o tamanho do vetor (entre 1 e MAX):\n");
+	printf("Insira o tamanho do vetor (entre 1 e %d):\n", MAX);
 	int n;
 	scanf("%d", &n);
 	return n;
 }
 
 /* imprime os racionais apontados pelo vetor de ponteiros para racionais */
-void imprimir_vetor_racional(defina os parametros) {
-    /* coloque aqui seu codigo */
+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));
+	printf("\n");
 }
 
 /* retorna um vetor de tam ponteiros para numeros racionais validos gerados aleatoriamente */
 /* retorna NULL em caso de falha                                                           */
-racional** aleatorio_vetor_racional(defina os parametros) {
-    /* coloque aqui seu codigo */
+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;
 }
 
 /* retorna um vetor de tam ponteiros para numeros racionais que apontam em ordem crescente para os 
  * racionais apontados pelo vetor recebido no parametro. Defina outras funcoes para te ajudar caso
  * ache necessario */
-racional** ordenar_vetor_racional(defina os parametros) {
-    /* coloque aqui seu codigo */
+racional **ordenar_vetor_racional(racional **vet, int tam) {
+	
+}
+
+/* libera a memoria alocada em um vetor vet de tam ponteiros para numeros racionais */
+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 main() {
@@ -44,7 +69,7 @@ int main() {
     tam = ler_tamanho();
 
     /* aloca v com tam ponteiros para racional */
-    v = aletorio_vetor_racional(tam);
+    v = aleatorio_vetor_racional(tam);
     /*  lembre-se que a funcao acima retorna NULL em caso de falha */
 
     /* chama a funcao para ordenar o vetor */
@@ -52,11 +77,11 @@ int main() {
     /*  lembre-se que a funcao acima retorna 0 em caso de falha */
 
     /* imprime o vetor ordenado */
-    imprimir_vetor_racional(w, tam);
+    imprimir_vetor_racional(v, tam);
 
     /* libera toda memoria alocada dinamicamente        */
     /* nao esqueca de testar com valgrind para conferir */
-    /* coloque aqui seu codigo */
+	v = liberar_vetor_racional(v, tam);
 
     return 0;
 }