diff --git a/tp3/tp3 b/tp3/tp3 index 8c908ef36069626952979641e37e84ab8f2e98cf..232f8a669ec169f962b26057b9f585a81857f33c 100755 Binary files a/tp3/tp3 and b/tp3/tp3 differ diff --git a/tp3/tp3.c b/tp3/tp3.c index b9b2a1aafc40b8e41d8e4bf1bdbac822c4abc5d9..623481c19590df162a50d1a0b4ded6c1a72b7b6c 100644 --- a/tp3/tp3.c +++ b/tp3/tp3.c @@ -35,8 +35,8 @@ racional **aleatorio_vetor_racional(int tam) { } /* inverte dois ponteiros para racional */ -void inverte(racional *r1, racional *r2) { - racional temp = *r1; +void inverte(racional **r1, racional **r2) { + racional *temp = *r1; *r1 = *r2; *r2 = temp; } @@ -48,10 +48,8 @@ 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) = criar_r(); *(ord + i) = *(vet + i); } @@ -60,12 +58,11 @@ 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((ord + i+1), (ord + i)); swaps++; } } } - return ord; } @@ -102,12 +99,12 @@ int main() { /* a funcao acima retorna NULL em caso de falha */ /* imprime o vetor ordenado */ - imprimir_vetor_racional(v, tam); imprimir_vetor_racional(w, tam); /* libera toda memoria alocada dinamicamente */ v = liberar_vetor_racional(v, tam); - w = liberar_vetor_racional(w, 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; -} +