4
respostas

IMC

O código nao funciona no meu navegador, nao entendo o que estou fazendo de errado.

<meta charset="UTF-8">

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

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

    var peso = parseint (prompt ("Informe seu peso:"));
    var altura = parseint (prompt ("Informe sua altura:"));

    var imc = peso / (altura * altura);

    mostra ("O Imc seu é: " + imc);

    if (imc <= 18.5) {
        mostra ("você está abaixo do peso.");
    }
    if (imc >= 35) {
        mostra ("você está acima do peso.");
    }
    if (imc > 18.5 && < 35 ) {
        mostra ("você está no peso ideial.")
    }

    mostra ("FIM");	

</script>
4 respostas

Há alguns problemas no seu código JavaScript. Vamos corrigi-los:

  1. A função correta para converter uma string em um número inteiro é parseInt (observe a letra "i" maiúscula), não parseint.
  2. Na última condição (if (imc > 18.5 && < 35 )), você deve especificar a variável (imc) antes de cada comparação (> 18.5 && < 35). Corrija isso para if (imc > 18.5 && imc < 35).
  3. Você pode querer considerar a possibilidade de usar else if nas condições, para garantir que apenas uma mensagem seja exibida, mesmo que o IMC satisfaça mais de uma condição.

Aqui está o código corrigido:

<meta charset="UTF-8">

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

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

    var peso = parseInt(prompt("Informe seu peso:"));
    var altura = parseInt(prompt("Informe sua altura:"));

    var imc = peso / (altura * altura);

    mostra("O Imc seu é: " + imc);

    if (imc <= 18.5) {
        mostra("Você está abaixo do peso.");
    } else if (imc >= 35) {
        mostra("Você está acima do peso.");
    } else if (imc > 18.5 && imc < 35) {
        mostra("Você está no peso ideal.");
    }

    mostra("FIM");	

</script>

Agora, o código deve funcionar corretamente. Certifique-se de inserir valores válidos ao serem solicitados pelo prompt para evitar possíveis erros.

MUITO OBRIGADO!

JÁ ESTAVA MEIO DESANIMADO, POR QUE NÃO ESTAVA ENCONTRANDO O ERRO. NA MINHA CABEÇA EU ESTAVA FAZENDO TUDO CERTO. VEJO QUE NAO ERA BEM ASSIM.

TENHO OUTRA DUVIDA, VE SE PODE ME AJUDAR.

<meta charset="UTF-8">

<script>
    
    function pulaLinha() {

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

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

   

    var peso = parseInt (prompt ("Imforme seu peso:"));
    var a = parseInt (prompt ("Informe sua altura:"));

    var imc = peso / (a * a);

     mostra ("O Imc seu é: " + imc);

    if (imc < 18.5) {
        mostra ("você está abaixo do peso.");
    }
    else if (imc > 35) {
        mostra ("você está acima do peso.");
    }
    else if (imc >= 18.5 && imc <= 35 ) {
        mostra ("você está no peso ideial.")
    }

    mostra ("FIM"); 

</script>

NA VARIÁVEL a ESTÁ RECEBENDO UM VALOR MENOR QUE O DIGITADO. EXEMPLO: EU DIGITO 1.75 E ELE RECEBE 1

EU COLOQUEI 90 DE PESO E 1.75 DE ALTURA

OLHA O CONSOLE ABAIXO Insira aqui a descrição dessa imagem para ajudar na acessibilidadeEU REMOVI O parseInt DA VARIAVEL a E RESOLVEU O PROBLEMA MAS ACREDITO QUE TENHA UMA SOLUÇÃO CORRETA.

O problema está relacionado ao uso da função parseInt para converter a altura (variável a). A função parseInt converte um valor para um número inteiro, truncando qualquer parte decimal. Para lidar com números decimais, você pode usar a função parseFloat.

Aqui está o trecho corrigido do seu código:

<meta charset="UTF-8">

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

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

    var peso = parseInt(prompt("Informe seu peso:"));
    var a = parseFloat(prompt("Informe sua altura:"));  // Usar parseFloat para números decimais

    var imc = peso / (a * a);

    mostra("O Imc seu é: " + imc);

    if (imc < 18.5) {
        mostra("Você está abaixo do peso.");
    }
    else if (imc > 35) {
        mostra("Você está acima do peso.");
    }
    else if (imc >= 18.5 && imc <= 35) {
        mostra("Você está no peso ideal.");
    }

    mostra("FIM"); 

</script>

Foi até um erro meu não ter colocado essa função na resposta anterior. Agora, ao usar parseFloat para a variável a, ela deve aceitar números decimais corretamente.