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

[Bug] Contador até numero acima ou abaixo - 07 Desafio: hora da prática

Olá, Após ultimo exercício tentei uma variação. Peça um numero inicial. Peça um numero final. Conte até o numero final.

Nesse exercício precisa identificar se vai contar + ou contar - Não conseguir fazer funcionar. Ele trava se eu faço assim:

let count = prompt('Escolha um numero para iniciar a contagem:');
let meta = prompt ('Escolha uma meta para terminar a contagem');
if (count > meta) {
    while (count >= meta)
    console.log(count)
    count--
} else {
    while (count <= meta)
    console.log(count)
    count++
}

Tentei de outra forma também. Mas nessa segunda ocasiao ele nao mostra o ultimo numero. Então tentei colocar outro console.log mas nao adianta. Trava se inserir outro. Assim ficou com BUG:

let count = prompt('Escolha um numero para iniciar a contagem:');
let meta = prompt ('Escolha uma meta para terminar a contagem:');
while (count != meta){
    console.log(count)
    if (meta > count){
        count = count + 1   
    } else {
        count = count - 1
    }
}
if (count = meta) {
   console.log(count)
}

Gostaria de saber porque enche de 1111111111111111111111 no console log. Alguém poderia explicar porque dá errado nos 2 códigos ?

1 resposta
solução!

Oi, Vitor! Tudo bem?

Em relação ao primeiro código o problema está ocorrendo porque devemos ter na sintaxe do nosso while um par de chaves, pois é esse par de chaves que delimita o código que será executado repetidamente enquanto a condição permanecer verdadeira, de acordo com o exemplo de sintaxe abaixo:

while (condicao) {
    // bloco de código que deve ser executado
}

Dessa forma, devemos apenas acrescentar esse par de chaves no código deixando-o da seguinte maneira:

let count = prompt('Escolha um numero para iniciar a contagem:');
let meta = prompt ('Escolha uma meta para terminar a contagem');
if (count > meta) {
    while (count >= meta){
        document.write(count)
        count--
    }

} else {
    while (count <= meta){
        document.write(count)
        count++
    }

}

No segundo código, estamos usando o operador de atribuição (=) em vez do operador de comparação (== ou ===) no if (count = meta), dessa forma, estamos atribuindo o valor de meta a count, em vez de comparar se eles são iguais. Além disso, deixo como sugestão converter os valores retornados pelo prompt para números antes de fazer comparações ou operações matemáticas, para evitar que se comportem como, deixando o nosso código da seguinte maneira:

let count = Number(prompt('Escolha um numero para iniciar a contagem:'));
let meta = Number(prompt ('Escolha uma meta para terminar a contagem:'));
while (count != meta){
    console.log(count);
    if (meta > count){
        count = count + 1;   
    } else {
        count = count - 1;
    }
}
if (count === meta) {
   console.log(count);
}

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

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