5
respostas

Resolução imc função prompt

<meta   charset="UTF-8">

<script>
//      Função calcular o imc       //
    function calcularImc(altura, peso) {
        return peso / (altura * altura);
    }
//      Variáveis recebendo a função prompt     //
    var informeNome = prompt("  Por favor informe o seu nome");
    var informePeso = prompt(informeNome +" ,por favor informe o seu peso");
    var informeAltura = prompt(informeNome + "  ,por favor informe a sua altura");

    var imc = informePeso / (informeAltura * informeAltura);
//      Estrutura condicional de verificação do imc     //
    if (imc <= 18.5) {
        alert(informeNome + "   Seu imc é "+ Math.round(imc) + " você esta abaixo do peso!");
        alert("Feito por Sebá Cavalcante");
    } else if (imc >= 18.5 &&  imc <= 24.9) {
        alert(informeNome + "   Seu imc é " + Math.round(imc) + " você está com o seu peso ideal!");
        alert("Feito por Sebá Cavalcante");
    } else if (imc >= 25 && imc <= 29.9) {
        alert(informeNome + "   Seu imc é "+ Math.round(imc) + " você está acima do peso ideal!");
        alert("Feito por Sebá Cavalcante");
    } else if (imc >= 30 ) {
        alert(informeNome + "   Seu imc é "+ Math.round(imc) + " você está obeso!");
        alert("Feito por Sebá Cavalcante");
    }

</script>
5 respostas

Eu coloquei umas funcionalidades diferentes, no fim do código coloquei uma imagem de ex de como fica no navegador . Se puder testar agradeço !!

<meta charset="UTF-8">
<h2>Calculando o IMC</h2>
<script>
    function pulaLinha() {
        document.write("<br><br>");
    }
    function mostrar(texto) {
        document.write(texto);
        pulaLinha();
    }
    function calcImc(peso, altura){
        return imc=(Math.round(10*peso/(altura**2)))/10

    }
    function pesoIdeal(altura){
        mostrar("Busque manter seu peso entre "+((Math.round(18.5*(altura**2)*10))/10)+" e "+((Math.round(24.9*(altura**2)*10))/10)+" kg.")
    }

    alert("Seja bem vindo(a) a calculadora de IMC, clique em OK para continuar");

    var peso=parseFloat(prompt("Informe seu peso em Kg"));
    var altura=prompt("Informe sua altura em centimetros")/100;
    var imc=calcImc(peso, altura);

    mostrar(peso+" kg e "+altura+"m.");
    document.write("<hr>Seu IMC = "+imc+" - ");

    ////////////////Primeiro Se
    if (imc<18.5){
        mostrar(" peso baixo");
    }
    if (imc>=18.5 && imc<25){
        mostrar(" peso normal");
    }
    if (imc>=25 && imc<30){
        mostrar(" sobrepeso");
    }
    if (imc>=30 && imc<35){
        mostrar(" obesidade grau 1");
    }
    if (imc>=35 && imc<40){
        mostrar(" obesidade grau 2");
    }
    if (imc>=40){
        mostrar(" obesidade grau 3");
    }

    ////////////////Segundo Se    
    if (imc<18.5){
        mostrar("Cuidado! Você está "+(((Math.round(18.5*(altura**2)*10))/10)-peso)+"kg a baixo do peso ideal!!!");
        pesoIdeal(altura);
    }
    if (imc>24.9){
        mostrar("Cuidado! Você está "+((Math.round((peso-(24.9*(altura**2)))*10))/10)+"kg a cima do peso ideal!!!");
        pesoIdeal(altura);
    } 
    if (imc>=18.5 && imc<=24.9){ 
        mostrar("Parabéns! Você está dentro do peso ideal para sua altua!");
        pesoIdeal(altura);
    }

    //////    Tabela de referencia
    document.write("<hr><h3>Tabela de referência</h3>")
    mostrar("Menor que 18,5 = Peso baixo")
    mostrar("Entre 18,5 e 24,9 = Peso normal")
    mostrar("Entre 25,0 e 29,9 = Sobrepeso")
    mostrar("Emtre 30,0 e 34,9 = Obesidade Grau 1")
    mostrar("Emtre 35,0 e 39,9 = Obesidade Grau 2")
    mostrar("Maior que 40,0 = Obesidade Grau 3")
    </script> 

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Guilherme tudo joia ? Espero que sim, irei testar aqui sim, gostei da forma como utilizou a função mostrar no if else isso deu algumas ideais e irei postar depois aqui, fico muito grato que compartilhe seus conhecimentos comigo. No decorrer do curso eu irei implementando novos atributos no programa, tais como cores botões etc...fique a vontade para acompanhar é interagir no post, abraço!

Olá Guilherme boa noite, testei seu código é gostei do resultado, aproveitei para fazer algumas mudanças, espero que fique do seu agrado!

<meta charset="UTF-8">

<h2>Calculando o IMC</h2>

<script>

    function pulaLinha() {

        document.write("<br><br>");

    }

    function mostrar(texto) {

        document.write(texto);
        pulaLinha();

    }

    function calcImc(peso, altura){

        return imc = (Math.round(10*peso/(altura**2)))/10

    }

    function tabelaReferencia() {

        document.write("<hr><h3>Tabela de referência</h3>" + 
        "<br>Menor que 18,5 = peso baixo" +
        "<br>Entre 18,5 e 24,9 = Peso normal" +
        "<br>Entre 25,0 e 29,9 = Sobrepeso" +
        "<br>Emtre 30,0 e 34,9 = Obesidade Grau 1" +
        "<br>Emtre 35,0 e 39,9 = Obesidade Grau 2" +
        "<br>Maior que 40,0 = Obesidade Grau 3");

    }

    function pesoIdeal(altura){

        mostrar("Busque manter seu peso entre "+
        ((Math.round(18.5*(altura**2)*10))/10)+" e "+
        ((Math.round(24.9*(altura**2)*10))/10)+" kg.")

    }

    alert("Seja bem vindo(a) a calculadora de IMC, clique em OK para continuar");
    var nome = prompt("Informe seu nome. ");
    var peso=parseFloat(prompt(nome + " Informe seu peso em Kg"));
    var altura=prompt(nome + "  Informe sua altura em centimetros")/100;
    var imc=calcImc(peso, altura);

    mostrar(peso+" kg e "+altura+"m.");
    document.write("<hr>" +nome+ " Seu IMC = "+imc+" Classificação: ");

    if (imc<18.5){

        mostrar(" peso baixo");
        mostrar("Cuidado! Você está "+(((Math.round(18.5*(altura**2)*10))/10)-peso)+"kg a baixo do peso ideal!!!");
        pesoIdeal(altura);

    } else if (imc >= 18.5 && imc <= 24.9){ 

        mostrar(" peso normal");
        mostrar("Parabéns! Você está dentro do peso ideal para sua altua!");
        pesoIdeal(altura);

    } else if (imc >= 25 && imc < 30){

        mostrar(" sobrepeso");
        mostrar("Cuidado! Você está "+((Math.round((peso-(24.9*(altura**2)))*10))/10)+"kg a cima do peso ideal!!!");
        pesoIdeal(altura);

    } else if(imc >= 30 && imc < 35){

        mostrar(" obesidade grau 1");
        mostrar("Cuidado! Você está "+((Math.round((peso-(24.9*(altura**2)))*10))/10)+"kg a cima do peso ideal!!!");//
        pesoIdeal(altura);

    }else if(imc >= 35 && imc < 40){

        mostrar(" obesidade grau 2");

    } else {

        mostrar(" obesidade grau 3");
        mostrar("Cuidado! Você está "+((Math.round((peso-(24.9*(altura**2)))*10))/10)+"kg a cima do peso ideal!!!");
        pesoIdeal(altura);

    } 

    tabelaReferencia();

    </script> 

@Sebá Cavalcante, tudo bem?!!

Dei uma olhada no código que vc alterou, e testei na minha maquina, entretanto, percebi que deu algumas informações erradas, poderia revisar teu código.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Wagner, tudo bem! Assim que você informa seu nome e seu peso vem um alert informando: "Wagner Informe sua altura em centímetros".

Então, quando você colocou 1.84m ao invés de 184cm os cálculos acabaram saindo errado. Mas também estamos com outros problemas, que nesse ponto do curso (logica de programação), ainda não aprendemos a resolver :

  • Se o usuário no campo da altura colocar em metros, vai dar erro.

  • Se o usuário no campo da peso separar as casas decimais com virgulas, vai dar erro. Ex: Se colocar 76,9kg vai ficar 76kg.

  • Se o usuário sair da aba e retornar da erro. Como se ele tivesse dado OK sem ter preenchido nada

  • Se o usuário trocar as respostas também da erro. Se colocar que tem 180kg e 76cm ele roda o calculo sem ver o erro.

  • Se o usuário quer refazer o calculo tem que atualizar a pagina.

Enfim, dei uma atualizada maior no código dessa vez, a ideia é migrar para uma versão que não utilize mais os PopUp. Porem, tive outros problemas com essa nova versão:

Quando fazemos o calculo a pagina muda! Minha ideia seria que a pagina atualizasse com os dados informados pelo usuário, porem, os campos de peso e altura ainda estivessem disponíveis para serem alterados e calculados novamente sem a necessidade de atualizar a pagina e começar tudo de novo.

Lembrando que ainda esta na primeira versão dessa nova ideia de código, então provavelmente de pra fazer de forma mais simples e com uma qtd menor de códigos . Se puderem ajudar nesse quesito agradeço muito!

Segue o novo código: No final tem duas imagens de como fica no navegador

<meta charset="UTF-8">

<h2>Calculando o IMC</h2>

Peso = <input id="inputPeso"> Kg<br><br>

Altura = <input id="inputAltura"> cm<br><br>

<button>Calcular</button>

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

    function mostrar(texto) {
        document.write(texto);
        pulaLinha();
    }

    function tabelaReferencia(){
        document.write("<hr><h3>Tabela de referência</h3>")
        mostrar( "Menor que 18,5 = Peso Baixo"+
                "<br>Entre 18,5 e 24,9 = Peso normal" +
                "<br>Entre 25,0 e 29,9 = Sobrepeso" +
                "<br>Emtre 30,0 e 34,9 = Obesidade Grau 1" +
                "<br>Emtre 35,0 e 39,9 = Obesidade Grau 2" +
                "<br>Maior que 40,0 = Obesidade Grau 3");
    }

    function calcImc(peso, altura){
        return imc=(Math.round(10*peso/(altura**2)))/10;
    }

    function pesoMax(){ 
        return (Math.round(24.9*(alturaInformada()**2)*10)/10);
    }

    function pesoMin(){ 
        return (Math.round(18.5*(alturaInformada()**2)*10)/10); 
    }

    function pesoInformado(){
        return parseInt(inputPeso.value);
    } 

    function alturaInformada(){
        return parseInt(inputAltura.value)/100;
    } 

    function calcular(){

        var imc=calcImc(pesoInformado(), alturaInformada());
        mostrar("<hr><b>IMC = "+imc+"</b>");
        document.write(" Classificação = ")

        if (imc<18.5){
            mostrar("Peso baixo");
            mostrar("Cuidado! Você está "+((Math.round(10*(pesoMin()-pesoInformado())))/10)+"kg a baixo do peso ideal!!!");
            alert("Cuidado! Você está "+((Math.round(10*(pesoMin()-pesoInformado())))/10)+"kg a baixo do peso ideal!!!");
        }
        if (imc>=18.5 && imc<25){
            mostrar("Peso normal");
            mostrar("Parabéns! Você está dentro do peso ideal para sua altura!");
            alert("Parabéns! Você está dentro do peso ideal para sua altura!");
        }
        if(imc>=25){
            if (imc>=25 && imc<30){
                mostrar("Sobrepeso");
            }
            if (imc>=30 && imc<35){
                mostrar("Obesidade grau 1");
            }
            if (imc>=35 && imc<40){
                mostrar("Obesidade grau 2");
            }
            if (imc>=40){
                mostrar("Obesidade grau 3");
            }
            mostrar("Cuidado! Você está "+((Math.round(10*(pesoInformado()-pesoMax())))/10)+"kg a cima do peso ideal!!!");
            alert("Cuidado! Você está "+((Math.round(10*(pesoInformado()-pesoMax())))/10)+"kg a cima do peso ideal!!!");
        }

        mostrar("Busque manter seu peso entre "+pesoMin()+" e "+pesoMax()+" kg.");
        tabelaReferencia();

    }

    var inputPeso = document.querySelector('input[id="inputPeso"]');
    var inputAltura = document.querySelector('input[id="inputAltura"]');
    var button = document.querySelector("button");

    alert("Seja bem vindo(a) a calculadora de IMC, clique em OK para continuar");

    button.onclick = calcular;


    </script> 

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade