1
resposta

[Projeto] o imc calculado é o peso, aonde est`meu erro? pfvr*

<meta charset= "UTF-8">

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

function mostra(frase){
    document.write(frase);
    pulaLinha();
}



mostra("<h1>" + "O imc." + "</h1>");

mostra("Criado no século 19 pelo matemático Lambert Quételet, o Índice de Massa Corporal, conhecido pela sigla IMC, é um cálculo simples que permite medir se alguém está ou não com o peso ideal. Ele aponta se o peso está adequado ou se está abaixo ou acima do peso.");


var nome = prompt("informe seu nome");
var altura = parseInt(prompt(nome + ", informe sua altura"));
var peso = parseInt(prompt(nome + ", informe sua peso"));



function calculaImc( altura,peso) {

    var imc = parseInt (Math.round(peso / (altura * altura)));
    return imc;
}



imcCalculado = calculaImc(altura,peso);



if(imcCalculado < 18){
    mostra("Seu imc é " + imcCalculaImc + " se cuide" + nome);

}


if(imcCalculado > 25){


    mostra("Seu imc é de " + imcCalculado + " se cuide " + nome);
}





if (imcCalculado >= 18 && imcCalculado <= 25){


           mostra(nome + " seu imc é" + imcCalculado + ", vc na media.");
        }




mostra("Qual o IMC normal? O IMC é considerado normal quando o valor está entre 18,5 e 24,9 kg/m².");


</script>
1 resposta

Oi, Italo! Tudo bem?

Podemos compreender a ocorrência do problema da seguinte maneira, nos trechos de código abaixo:

var altura = parseInt(prompt(nome + ", informe sua altura"));
var peso = parseInt(prompt(nome + ", informe sua peso"));

A altura e peso logo ao serem recebidas, antes mesmo do calculo do imc ser feito, já são convertidas em um número inteiro, prejudicando o calculo do imc da maneira correta.

Podemos visualizar isso a partir do seguinte exemplo: caso a altura declarada seja 1.56 e o peso 57, ao invés do cálculo do imc dar o número exato da operação (peso / (altura * altura), que no caso do exemplo é igual a 23,42 para só então aproximarmos para o valor inteiro 23, o que está ocorrendo é que os valores recebidos já são convertidos a números inteiro e a operação acaba ficando como (57 / (1 * 1) que é igual à 57, o mesmo valor do peso, já que um número multiplicado ou dividido por 1 é igual a ele mesmo.

Dessa forma, é aconcelhável que deixemos o nosso código da seguinte forma:

function mostra(frase){
    document.write(frase);
    pulaLinha();
 }

 mostra("<h1>" + "O imc." + "</h1>");

 mostra("Criado no século 19 pelo matemático Lambert Quételet, o Índice de Massa Corporal, conhecido pela sigla IMC, é um cálculo simples que permite medir se alguém está ou não com o peso ideal. Ele aponta se o peso está adequado ou se está abaixo ou acima do peso.");


 var nome = prompt("informe seu nome");
 var altura = prompt(nome + ", informe sua altura");
 var peso = prompt(nome + ", informe sua peso");



 function calculaImc(altura,peso) {

    var imc = Math.round(peso / (altura * altura));
    return imc;
 }

 imcCalculado = calculaImc(altura,peso);

 if(imcCalculado < 18){
    mostra("Seu imc é " + imcCalculado + " se cuide " + nome);
 }

 if(imcCalculado > 25){
    mostra("Seu imc é de " + imcCalculado + " se cuide " + nome);
 }

 if (imcCalculado >= 18 && imcCalculado <= 25){
    mostra(nome + " seu imc é " + imcCalculado + ", vc está na media.");
 }


 mostra("Qual o IMC normal? O IMC é considerado normal quando o valor está entre 18,5 e 24,9 kg/m².");


</script>

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

Um forte abraço e bons estudos!

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