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

Ousadia e Alegria, onde está o erro?

<meta charset="UTF-8">

<script>


    function pulaLinha() {
        document.write("<br><hr>");
    }
    function mostra(frase) {
        document.write("<big>" + frase + "</big>");
        pulaLinha();
    }
    function calculaImc(peso, altura) {
        return peso / (altura * altura);
    }
    let nome = prompt("Informe seu nome")
    let alturaInformada = prompt(nome + ", informe sua altura");
    let pesoInformado = prompt(nome + ", informe seu peso");
    let imc = calculaImc(pesoInformado, alturaInformada);
    document.write("<big>" + nome + ", o seu IMC calculado é " + Math.round(imc) + "</big>");

    if (imc < 18.5) {
        document.write("<big>" + nome + ", você está abaixo do peso." + "</big>");
    } else {
        document.write();
    }
    pulaLinha();
    if (imc => 18.5 && imc <= 24.9) {
        document.write("<big>" + nome + ", você está no peso normal." + "</big>");
    } else {
        document.write();
    }
    pulaLinha();
    if (imc => 25 && imc <= 29.9) {
        document.write("<big>" + nome + ", você está no sobrepeso" + "</big>");
    } else {
        document.write();
    }
    pulaLinha();
    if (imc => 30 && imc <= 34.9) {
        document.write("<big>" + nome + ", você está em obesidade 1" + "</big>");
    } else {
        document.write();
    }
    pulaLinha();
    if (imc => 35 && imc <= 39.9) {
        document.write("<big>" + nome + ", você está em obesidade 2 (severa)" + "</big>");
    } else {
        document.write();
    }
    pulaLinha();
    if (imc => 40) {
        document.write("<big>" + nome + ", você está em obesidade 3 ou Mórbida" + "</big>")
    } else {
        document.write();
    }

</script>

Pessoal, eu cheguei até esse ponto do curso de formação, e claro que quis arriscar e elaborar mais o código (ainda um tanto quanto difícil de se ler eu sei). Acontece que ao rodar o código não apresenta erros, ele faz o cálculo do IMC la em cima, e todas as Ifs que usei, ele imprime todos os document.write que coloquei em cada if um abaixo do outro. Eu queria que ele apresentasse em uma linha o resultado do IMC e a linha de baixo a tag "


" apresentar a condição referente ao resultado do IMC apresentado. (ps: como anexo um print aqui? no ctrlC + ctrlV não cola).
5 respostas

Oi Julio.

Tem como você colocar um exemplo por escrito de como você quer ver a exibição do texto. Aqui, que eu saiba, não dá pra copiar e colar.

Você quer ver assim:

Allan, o seu IMC calculado é 28
-------------------------------------------------------------------
 Você está no peso normal.

Seria isso?

Se for isso, você pode tentar esse código.

<meta charset="UTF-8">
<script>

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

    function mostra(frase) {
        document.write("<big>" + frase + "</big>");
    }

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

    let nome = prompt("Informe seu nome")
    let alturaInformada = prompt(nome + ", informe sua altura");
    let pesoInformado = prompt(nome + ", informe seu peso");

    let imc = calculaImc(pesoInformado, alturaInformada);

    document.write("<big>" + nome + ", o seu IMC calculado é " + Math.round(imc) + "</big>");

    pulaLinha();

    if (imc < 18.5) {
        document.write("<big>" + nome + ", você está abaixo do peso." + "</big>");

    } else if (imc => 18.5 && imc <= 24.9) {
        document.write("<big>" + nome + ", você está no peso normal." + "</big>");

    } else if (imc => 25 && imc <= 29.9) {
        document.write("<big>" + nome + ", você está no sobrepeso" + "</big>");

    } else if (imc => 30 && imc <= 34.9) {
        document.write("<big>" + nome + ", você está em obesidade 1" + "</big>");

    } else if (imc => 35 && imc <= 39.9) {
        document.write("<big>" + nome + ", você está em obesidade 2 (severa)" + "</big>");

    } else if (imc => 40) {
        document.write("<big>" + nome + ", você está em obesidade 3 ou Mórbida" + "</big>")

    } else {
        document.write("<big>ERROR</big>");
    }

</script>

Diga se deu certo!

Allan meu amigo... já deu uma melhorada, você entendeu bem o que eu quis ousar.. Obrigado por isso. Mas surgiu aqui algo, independente do valor do resultado do imc, o segundo resultado é sempre Julio, você está no peso normal.

já reli aqui e ainda não achei o bug. rsrs consegue fortalecer esse mero aprendiz? rsrsr

solução!

Oi Julio.

Li com calma o código pra entender o que estava acontecendo. Sem querer propaguei um bug do seu código para o meu. kkkk Copiar e colar dá nisso. :-))

O problema está no operador '=>' que está escrito incorretamente, veja:

else if (imc => 18.5 && imc <= 24.9)  //Incorreto

O certo é: >=

else if (imc >= 18.5 && imc <= 24.9)  //Correto

Faça o teste pra confirmar:

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

function mostra(frase) {
    document.write("<big>" + frase + "</big>");
}

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

function teste(nome, altura, peso){

    let nomeInformado = nome;
    let alturaInformada = altura;
    let pesoInformado = peso;

    let imc = calculaImc(pesoInformado, alturaInformada);

    document.write("<big>" + nomeInformado + ", o seu IMC calculado é " + Math.round(imc) + "</big>");

    pulaLinha();

    if (imc < 18.5) {
        document.write("<big>" + nomeInformado + ", você está abaixo do peso." + "</big>");

    } else if (imc >= 18.5 && imc <= 24.9) {
        document.write("<big>" + nomeInformado + ", você está no peso normal." + "</big>");

    } else if (imc >= 25 && imc <= 29.9) {
        document.write("<big>" + nomeInformado + ", você está no sobrepeso" + "</big>");

    } else if (imc >= 30 && imc <= 34.9) {
        document.write("<big>" + nomeInformado + ", você está em obesidade 1" + "</big>");

    } else if (imc >= 35 && imc <= 39.9) {
        document.write("<big>" + nomeInformado + ", você está em obesidade 2 (severa)" + "</big>");

    } else if (imc >= 40) {
        document.write("<big>" + nomeInformado + ", você está em obesidade 3 ou Mórbida" + "</big>")

    } else {
        document.write("<big>ERROR</big>");
    }
}

teste('Julio', 1.73, 40); pulaLinha();pulaLinha();
teste('Julio', 1.73, 73); pulaLinha();pulaLinha();
teste('Julio', 1.73, 85); pulaLinha();pulaLinha();
teste('Julio', 1.73, 90); pulaLinha();pulaLinha();
teste('Julio', 1.73, 110); pulaLinha();pulaLinha();
teste('Julio', 1.73, 140); pulaLinha();pulaLinha();

Agora vai!

Allan, meu querido, me desculpe a demora em lhe responder... Vou marcar aqui como solucionado... Realmente o problema se deu no operador mesmo...

Obrigado amigo