1
resposta

Sugestão de resolução

Boa noite, para resolver a questão considerei algumas mudanças no código:

  1. Defini a variável contador como 0
  2. Na condição do while alterei para "contador < qtdNumeros"
  3. Adicionei "contador++" dentro do while

Dessa forma com a variável contador iniciando como 0, ele vai ser menor do que o valor informado pelo usuário (que estará armazenado na variável qtdNumeros). A cada loop do while é incrementado +1 na variável contador, sendo assim, o loop irá encerrar no momento que o valor de contador for igual ao de qtdNumeros.

Fiz alguns testes desse código no CodePen e funcionou :)

let qtdNumeros = prompt('Digite a quantidade de números para o cálculo da média:');
let soma = 0;
let contador = 0;

while(contador < qtdNumeros){
    contador++;
    let numero = parseInt(prompt('Digite o numero:'));
    soma += numero;
}

let media = soma / qtdNumeros;
console.log(media);

Edit 07/03/2024

Conversando com um amigo, ele me mostrou o "Teste de Mesa" que ajuda em soluções de problemas como esse, utilizando o teste cheguei nesse resultado:

let qtdNumeros = prompt('Digite a quantidade de números para o cálculo da média:');
let soma = 0;
let contador = qtdNumeros;

while(contador > 0){
    let numero = parseInt(prompt('Digite o numero:'));
    soma += numero;
    contador--;
}

let media = soma / qtdNumeros;
console.log(media);

Não alterei nenhuma variável, só alterei a lógica de incremento (++) para decremento (--)

1 resposta

Oi, Heitor! Tudo bem?

Parabéns e obrigada pelas considerações! O "Teste de Mesa" é realmente uma técnica muito útil para entender o fluxo de execução do código e identificar possíveis erros, as soluções são válidas e resolvem o problema do loop infinito. Parabéns pela iniciativa de buscar soluções e compartilhar suas descobertas! Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!