Oi Flavio,
A sua dúvida sobre a lógica da resolução é bastante pertinente. O problema aqui é que a inicialização das variáveis maior
e menor
pode levar a resultados inesperados. No seu código, maior
é iniciado em 0, e menor
também em 0, o que significa que, ao encontrar números negativos, menor
nunca será atualizado corretamente, pois nenhum número negativo será menor que 0.
Para corrigir isso, você pode inicializar maior
com um valor muito baixo (como Number.NEGATIVE_INFINITY
) e menor
com um valor muito alto (como Number.POSITIVE_INFINITY
). Assim, você garante que qualquer número que você encontrar no array será maior que maior
e menor que menor
. Veja como ficaria:
const arrMenoresMaiores = [5, 37, 18, 59, 12, -5];
function imprimeMaiorEMenor(arr) {
let maior = Number.NEGATIVE_INFINITY;
let menor = Number.POSITIVE_INFINITY;
for(let i = 0; i < arr.length; i++) {
if (arr[i] > maior) {
maior = arr[i];
}
if (arr[i] < menor) {
menor = arr[i];
}
}
return `o maior número é ${maior} e o menor número é ${menor}`;
}
console.log(imprimeMaiorEMenor(arrMenoresMaiores));
Com essa modificação, o código funcionará corretamente para qualquer conjunto de números, incluindo aqueles que têm valores negativos.
Caso este post o tenha ajudado, por favor,
marcar como solucionado ☑️.
Bons Estudos! 🤓