Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] RESOLUÇÃO 4

Boa noite! Gostaria de saber a lógica por trás dessa resolução. Ela só foi possível pois só havia um número menor que 0, certo?

const arrMenoresMaiores = [5, 37, 18, 59, 12, -5];

function imprimeMaiorEMenor(arr) {

  let maior = 0;
  let menor = 0;

  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));
1 resposta
solução!

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.

tux matrix    Caso este post o tenha ajudado, por favor, marcar como solucionado ☑️. Bons Estudos! 🤓