Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não entendi o erro no meu código, se alguém puder me ajudar agradeceria

<meta charset="UTF-8">
<script>
    function pulaLinha(){
        document.write("<br> <br>")
    {
    function mostra(frase) {
        document.write(frase);
        pulaLinha
    }

    function calculaImc(altura, peso){
        return peso/(altura*altura);
    }

    mostra("<h1>Você está saudável?</h1>");

    var nome= prompt("Qual o seu nome?");
    var alturaInf= parseInt(prompt(nome+", qual a sua altura?"));
    var pesoInf= parseInt(prompt(nome+", Qual o seu peso?"));

    var imc= calculaImc(alturaInf,pesoInf);

    mostra(nome+" seu IMC é "+imc);

    if (imc>18,5 && imc<24,9){
        mostra("Seu imc está bom");
    }    else {
        ("Seu imc está ruim");
    }
</script>
3 respostas
solução!

Oi Oberdan, tudo bem?

Veja que na função pulaLinha(), as chaves estão sendo abertas duas vezes:

function pulaLinha() {
    document.write("<br> <br>")
{

O navegador acaba não conseguindo interpretar essa função e manda uma mensagem, no console do navegador, apontando um erro de sintaxe:

Imgur

Fechando as chaves corretamente deve resolver esse problema e as mensagens já devem aparecer na sua página:

function pulaLinha() {
    document.write("<br> <br>")
}

Mas veja que agora, o IMC não está apresentando o valor que ele deveria. Então tire o parseInt da declaração das variáveis:

var alturaInf= parseInt(prompt(nome+", qual a sua altura?"));
var pesoInf= parseInt(prompt(nome+", Qual o seu peso?"));

Veja que a altura e peso de uma pessoa não é, necessariamente, um número inteiro. Alguém que tiver uma altura de 1.80m, por exemplo, teria essa altura convertida para 1m! Portanto, podemos deixar esse valores sem a conversão:

var alturaInf= prompt(nome+", qual a sua altura?");
var pesoInf= prompt(nome+", Qual o seu peso?");

No trecho do código onde está sendo feita a verificação do IMC, faltou a palavra mostra para printar o texto. E, infelizmente, o padrão que usamos para separar casas decimais é o americano, então precisamos separar as casas decimais usando o ponto, e não a vírgula como estamos mais acostumados:

if (imc>18.5 && imc<24.9){
    mostra("Seu imc está bom");
} else {
    mostra("Seu imc está ruim");
}

Espero ter ajudado, se ficou qualquer dúvida é só avisar!

Bons estudos!!

Obrigado pela reposta cirúrgica. Ficarei mais atento aos pontos e as chaves.

Opa, é isso aí Oberdan! O importante é sempre buscarmos melhorar e, vamos ser sinceros, mais do que acertar de primeira, são esse erros que mais nos marcam e nos ajudam a codar melhor no futuro.

Bons estudos!!