Olá, Isabella!
Parabéns pela sua dedicação em fazer todos os exercícios e por compartilhar suas soluções! Isso mostra que você está realmente se empenhando no aprendizado de JavaScript.
Seu código está muito bom e a lógica para a maioria dos exercícios está correta e funcional.
No entanto, notei apenas dois pontos nos exercícios 5 e 6 que podem ser ajustados para refletir melhor o que é esperado em um cenário real de entrada de dados ou para simplificar a estrutura do laço.
Abaixo, deixo meus comentários e sugestões, mantendo o seu código o mais intacto possível.
Revisão dos Exercícios
Exercício 5: Receber números até digitar 0
O enunciado pede para simular a entrada de números e que o programa continue até que o usuário digite 0.
Você criou uma lista (numeroDigitado) e está percorrendo ela. Isso é uma excelente simulação, mas o laço do...while original foi pensado para rodar enquanto a condição for verdadeira e geralmente para receber a entrada do usuário em cada repetição (se estivéssemos em um ambiente interativo).
Sua lógica de contagem também está correta ao somar i + 1, já que a contagem começa do zero.
Sugestão de Pequeno Ajuste: Para ser ainda mais próximo da simulação de entrada, você pode usar a variável i para acessar o número e fazer a verificação no while ser baseada no número atual:
let numeroDigitado = [13, 14, 15, 0];
let i = 0; // i será o nosso contador de números digitados
do {
// Você pode, inclusive, mostrar o número que "foi digitado"
console.log(`Número digitado: ${numeroDigitado[i]}`);
i++; // Incrementa o contador para o próximo número da lista
} while (numeroDigitado[i-1] !== 0);
// A condição verifica o último número acessado (i-1)
// e o laço só para quando esse número for 0.
console.log(`Números digitados: ${i}`);
// Ao final, 'i' já é o total de números (13, 14, 15 e o 0)
// porque ele foi incrementado para contar o próprio 0.
No seu código original, a variável i era incrementada e a condição verificava o próximo elemento (numeroDigitado[i]), o que fazia o laço parar antes de processar o 0. A sua correção manual (i+1 no console.log) funcionou perfeitamente para o resultado final, mas a lógica acima reflete melhor o fluxo de "processar o número atual, e se ele não for zero, continuar".
Exercício 6: Jogo do número secreto
Aqui, o ponto principal é que o laço do...while deve ser usado para controlar as tentativas.
No seu código, o laço está rodando 3 vezes, independentemente de o número ser acertado na primeira, segunda ou terceira vez.
Em um jogo do número secreto, o ideal é que o laço pare imediatamente se o usuário acertar.
Sugestão de Correção (Usando a estrutura do...while que você escolheu):
A condição de parada deve ser dupla: ou o número foi acertado, ou as tentativas acabaram.
let numeroSecreto = 7;
let numeroTentativa = 0;
let numerosSimulados = [1, 3, 7]; // Simulação de 3 entradas
let j = 0;
do {
// Pega o número simulado para a tentativa atual
numeroTentativa = numerosSimulados[j];
if (numeroSecreto === numeroTentativa) {
console.log("Acertou!");
// Se acertou, podemos encerrar o laço com um 'break'
break;
} else {
console.log("Tente novamente!");
}
j++; // Passa para a próxima simulação
} while (j < 3); // O laço roda enquanto houver tentativas (j < 3)
// Verificação final
if (numeroSecreto !== numeroTentativa) {
console.log("Número de tentativas excedido! O número era: " + numeroSecreto);
}
O uso do break garante que, se o usuário acertar na primeira ou segunda tentativa, o programa sai imediatamente do do...while, como em um jogo real.
Os outros exercícios estão perfeitos!
Contador (1): Correto.
Soma (2): Correto.
Tabuada (3): Correto.
Contagem Regressiva (4): Correto.
Idade (7): Correto, usando o somatorio de forma bem inteligente.
Pares (8): Correto, ótima forma de usar o operador módulo (%).
Múltiplos de 3 (9): Correto.
Continue assim!