diff --git a/tp3/tp3 b/tp3/tp3
index 232f8a669ec169f962b26057b9f585a81857f33c..409f0be80217e5e5ba97548a056c9230df6f6ad0 100755
Binary files a/tp3/tp3 and b/tp3/tp3 differ
diff --git a/tp3/tp3.c b/tp3/tp3.c
index 623481c19590df162a50d1a0b4ded6c1a72b7b6c..f57703dfffd39f34da01e9aa88709367cee8ab98 100644
--- a/tp3/tp3.c
+++ b/tp3/tp3.c
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <time.h>
 #include "lib_racionais.h"
 #define MAX 100
 
@@ -8,6 +9,10 @@ int ler_tamanho() {
 	printf("Insira o tamanho do vetor (entre 1 e %d):\n", MAX);
 	int n;
 	scanf("%d", &n);
+	while (n < 1 || n > 100) {
+		printf("Por favor, insira um inteiro entre 1 e %d:\n", MAX);
+		scanf("%d", &n);
+	}
 	return n;
 }
 
@@ -18,8 +23,8 @@ void imprimir_vetor_racional(racional **vet, int tam) {
 		imprimir_r(*(vet + i));
 		printf(" ");
 	}
-	imprimir_r(*(vet + tam-1));
-	printf("\n");
+	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 */
@@ -35,7 +40,7 @@ racional **aleatorio_vetor_racional(int tam) {
 }
 
 /* inverte dois ponteiros para racional */
-void inverte(racional **r1, racional **r2) {
+void inverte_ponteiros(racional **r1, racional **r2) {
 	racional *temp = *r1;
 	*r1 = *r2;
 	*r2 = temp;
@@ -58,7 +63,7 @@ racional **ordenar_vetor_racional(racional **vet, int tam) {
 		swaps = 0;
 		for (i = 0; i < tam-1; i++) {
 			if (menor_r(*(ord + i+1), *(ord + i))) {
-				inverte((ord + i+1), (ord + i));
+				inverte_ponteiros((ord + i+1), (ord + i));
 				swaps++;
 			}
 		}
@@ -66,7 +71,8 @@ racional **ordenar_vetor_racional(racional **vet, int tam) {
 	return ord;
 }
 
-/* libera a memoria alocada em um vetor vet de tam ponteiros para numeros racionais */
+/* 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++) {
@@ -80,11 +86,10 @@ racional **liberar_vetor_racional(racional **vet, int tam) {
 
 int main() {
 	/* inicializa semente randomica */
-	srand(0);
+	srand(time(0));
 
     racional **v, **w;
-    /* v e w são vetores de ponteiros para racionais (racional *)
-       alternativamente poderia ser declarado como racional *v[] */
+    /* v e w são vetores de ponteiros para racionais (racional *) */
     
     int tam;
     /* ler o tamanho do vetor de racionais */
@@ -107,4 +112,4 @@ int main() {
 	w = NULL;  /* racionais ja foram liberados na chamada de liberar_vetor_racional para v. */
 
     return 0;
-
+}