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 */