diff --git a/tp3/lib_racionais.c b/tp3/lib_racionais.c
index 30ea6699cdc07f3d92197eef312db43fd0b513d2..256f18dfff2d44439e1d2e3bcfa6df30728137cb 100644
--- a/tp3/lib_racionais.c
+++ b/tp3/lib_racionais.c
@@ -73,23 +73,23 @@ int valido_r(racional *r) {
 
 void simplifica_r(racional *r) {
 	int fator = mdc(r->num, r->den);
-	if(fator) {
+	if (fator) {
 		r->num /= fator;
 		r->den /= fator;
 	}
 }
 
-int menor_r(racional *r1, racional *r) {
-	int a = r1->num * r->den;
-	int b = r1->den * r->num;
+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 iguais_r(racional *r1, racional *r) {
-	int a = r1->num * r->den;
-	int b = r1->den * r->num;
+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;
diff --git a/tp3/lib_racionais.h b/tp3/lib_racionais.h
index 56a61612e8ff0d722063d52f9b14ca3e34497009..2db03b318994f85d3d8abc85d738c7944dbd42c9 100644
--- a/tp3/lib_racionais.h
+++ b/tp3/lib_racionais.h
@@ -10,10 +10,7 @@ typedef struct racional {
     int den;
 } racional;
 
-/* retorna um numero aleatorio entre min e max, inclusive.
- * a rigor esta funcao poderia estar em outro arquivo, mas
- * deixamos aqui para nao complicar demais
-*/
+/* retorna um numero aleatorio entre min e max, inclusive. */
 int aleat (int min, int max);
 
 /* cria um racional sem valores atribuidos, so aloca o espaco */
@@ -43,26 +40,26 @@ int mmc (int a, int b);
 /* retorna 1 se o racional r eh valido ou 0 caso contrario */
 int valido_r (racional *r);
 
-/* simplifica um racional para o menor denominador possivel */
-/* caso o racional seja da forma n/n, retorna 1             */
+/* simplifica um racional para o menor denominador possivel   */
+/* caso o racional seja da forma n/n, simplifica ele para 1/1 */
 void simplifica_r (racional *r);
 
 /* retorna 1 caso *r1 seja menor do que *r2 */
-int menor_r (racional *r1, racional *r);
+int menor_r (racional *r1, racional *r2);
 
 /* retorna 1 caso os racionais *r1 e *r2 sejam iguais ou 0 caso contrario */
-int iguais_r (racional *r1, racional *r);
+int iguais_r (racional *r1, racional *r2);
 
-/* soma dois racionais e devolve um ponteiro para o resultado */
-/* retorna NULL em qualquer caso de falha                     */
+/* soma dois racionais e devolve um ponteiro para o resultado       */
+/* retorna NULL em qualquer caso de falha, por consistencia com dividir */
 racional *somar_r (racional *r1, racional *r2);
 
-/* subtrai dois racionais e devolve um ponteiro para o resultado */
-/* retorna NULL em qualquer caso de falha                        */
+/* subtrai dois racionais e devolve um ponteiro para o resultado    */
+/* retorna NULL em qualquer caso de falha, por consistencia com dividir */
 racional *subtrair_r (racional *r1, racional *r2);
 
-/* multiplica dois racionais e devolve um ponteiro o resultado */
-/* retorna NULL em qualquer caso de falha                      */
+/* multiplica dois racionais e devolve um ponteiro o resultado      */
+/* retorna NULL em qualquer caso de falha, por consistencia com dividir */
 racional *multiplicar_r (racional *r1, racional *r2);
 
 /* divide dois racionais e devolve um ponteiro para resultado */
diff --git a/tp3/tp3 b/tp3/tp3
index 409f0be80217e5e5ba97548a056c9230df6f6ad0..b4c92ab8e3d30fb1a82a827c83ec9e0511122b4f 100755
Binary files a/tp3/tp3 and b/tp3/tp3 differ
diff --git a/tp3/tp3.c b/tp3/tp3.c
index f57703dfffd39f34da01e9aa88709367cee8ab98..a885744e15239cb010b29d78acdd1964186df5e6 100644
--- a/tp3/tp3.c
+++ b/tp3/tp3.c
@@ -6,11 +6,11 @@
 
 /* le um inteiro na faixa [0..MAX-1] */
 int ler_tamanho() {
-	printf("Insira o tamanho do vetor (entre 1 e %d):\n", MAX);
+	printf("Insira o tamanho do vetor (entre 0 e %d):\n", MAX-1);
 	int n;
 	scanf("%d", &n);
-	while (n < 1 || n > 100) {
-		printf("Por favor, insira um inteiro entre 1 e %d:\n", MAX);
+	while (n < 0 || n > MAX-1) {
+		printf("Por favor, insira um inteiro entre 0 e %d:\n", MAX-1);
 		scanf("%d", &n);
 	}
 	return n;
@@ -93,8 +93,9 @@ int main() {
     
     int tam;
     /* ler o tamanho do vetor de racionais */
-    tam = ler_tamanho();
-
+    if (!(tam = ler_tamanho()))
+		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 */