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; }