From 732ea96d807c3a85a1ce81717b59dfe816be6697 Mon Sep 17 00:00:00 2001 From: Guz013 Date: Sat, 25 Apr 2026 09:37:03 -0300 Subject: [PATCH] refacor: use pointer and malloc --- challenges/imortal.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/challenges/imortal.c b/challenges/imortal.c index 7ab32e8..158db27 100644 --- a/challenges/imortal.c +++ b/challenges/imortal.c @@ -180,13 +180,15 @@ int imortal_process() { return EXIT_FAILURE; } - double reads[readCount]; + // Dinamicamente alocar memória para as leituras + double *reads = malloc(readCount * sizeof(double)); + for (int i = 0; i < readCount; i++) { // rand é uma função de que retorna um número inteiro aleatório // entre 0 e RAND_MAX, nessa linha, ele está sendo dividio por RAND_MAX para // poder virar um double entre 0 e 1, e depois multíplicado por 100 para // virar um número entre 0 e 100. - reads[i] = (double)rand() / (double)RAND_MAX * 100; + reads[i] = ((double)rand() / (double)RAND_MAX) * 100; printf("Leitura %d: %.2f\n", i + 1, reads[i]); } @@ -207,6 +209,7 @@ int imortal_process() { printf("Escolha uma opção: "); if (scanf("%d", &opt) != 1) { printf("ERROR: Falha ao ler a entrada do usuário.\n"); + free(reads); // Qualquer return tem que antes liberar a memória das leituras return EXIT_FAILURE; } @@ -235,6 +238,7 @@ int imortal_process() { // Verificação de falha para a função `verify_reads` if (verify_reads(reads, readCount) != EXIT_SUCCESS) { printf("ERROR: Falha ao verificar faixas das leituras.\n"); + free(reads); return EXIT_FAILURE; } @@ -254,6 +258,7 @@ int imortal_process() { } case 0: { printf("Saindo do programa.\n"); + free(reads); return EXIT_SUCCESS; } // Checagem caso o usuário coloque uma operação que não existe, ou @@ -270,14 +275,17 @@ int imortal_process() { char res = 'n'; if (scanf(" %c", &res) != 1) { printf("ERROR: Falha ao ler a entrada do usuário.\n"); + free(reads); return EXIT_FAILURE; } if (res == 'n') { + free(reads); return EXIT_SUCCESS; } } + free(reads); return EXIT_SUCCESS; } @@ -294,7 +302,7 @@ int main() { // Iniciação da simulação do IMORTAL-1, com checagem de // erro para caso o processo tenha falhado por alguma razão. - if (imortal_process() == EXIT_SUCCESS) { + if (imortal_process() != EXIT_SUCCESS) { printf("Erro ao executar IMORTAL-1"); return EXIT_FAILURE; };