refacor: use pointer and malloc

This commit is contained in:
Guz
2026-04-25 09:37:03 -03:00
parent 0df307906e
commit 732ea96d80

View File

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