Nessa solução, o usuário informa sua própria pontuação final.
Também usei um objeto para mapear os resultados em vez de vários if/else ou um ternário longo, conforme foi recomendado em casos similares.
import { createInterface } from "readline";
const rl = createInterface({
input: process.stdin,
output: process.stdout,
});
const validarInput = (input) => {
input = Number(input);
if (Number.isNaN(input) || !Number.isInteger(input)) return null;
return input;
};
const avaliarDesempenho = (pontos, callback) => {
const resultado =
pontos < 50 ? "reprovado" : pontos < 70 ? "reforço" : "aprovado";
console.log(`Pontuação: ${pontos}`);
callback(resultado);
};
const gerarMensagem = (resultado) => {
const msgsDisponiveis = {
reprovado: "Infelizmente, você foi reprovado.",
reforço: "Cuidado! Você precisa de reforço",
aprovado: "Parabéns! Você foi aprovado!",
};
console.log(msgsDisponiveis[resultado]);
rl.close();
};
rl.question("Quantos pontos você juntou?\n> ", (input) => {
const pontos = validarInput(input);
if (pontos === null) {
console.log("Insira uma pontuação válida.");
rl.close();
return;
}
avaliarDesempenho(pontos, gerarMensagem);
});