2
respostas

[Dúvida] Duvída no código

Boa noite, neste exercícos de laços de repitição: Crie uma função que receba uma array de números inteiros e retorne o menor valor e o maior valor da array, no seguinte formato: 'o menor número é X e o maior número é Y'.

const numeros = [3, 8, 12, 5, 6, 10, 7, 2, 9, 14];

let numeroMaior=0;
let numeroMenor=0;

for (let numero of numeros) {
    if (numero> numeroMaior) {
        numeroMaior=numero;
    } else if(numero<numeroMenor){
        numeroMenor=numero;
    }
}

console.log(`o menor número é ${numeroMenor} e o maior número é ${numeroMaior}`);

o resultado exibido é o menor número é 0 e o maior número é 14, Qual é o problema no código?

2 respostas

Olá, Andrey! Como vai?

O problema do seu código está na inicialização das variáveis numeroMaior e numeroMenor. Ambas estão sendo inicializadas com o valor 0. Isso causa um problema, pois se todos os números do array forem maiores que 0, o numeroMenor nunca será atualizado, pois não haverá nenhum número no array menor que 0.

Nesse caso específico, uma solução mais simples e direta seria inicializar ambas as variáveis com o primeiro elemento do array. Veja como ficaria:

const numeros = [3, 8, 12, 5, 6, 10, 7, 2, 9, 14];

let numeroMaior = numeros[0];
let numeroMenor = numeros[0];

for (let numero of numeros) {
    if (numero > numeroMaior) {
        numeroMaior = numero;
    } else if (numero < numeroMenor) {
        numeroMenor = numero;
    }
}

console.log(`o menor número é ${numeroMenor} e o maior número é ${numeroMaior}`);

Com essa modificação, o código deve funcionar como esperado, retornando 'o menor número é 2 e o maior número é 14'.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

muito bom