3
respostas

nao converte texto em numero

<meta charset="UTF-8">

<script>

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

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

    function calculaImc(altura, peso) {

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

    var nome = prompt ("Qual Seu Nome?");

    var peso = parseInt(prompt("Digite Seu peso."));

    var altura = parseInt(prompt("Digite Sau altura."));

    var imccalculado = calculaImc(peso / (altura * altura));

    mostra (nome + ", O Seu IMC é : " + imccalculado);

</script>
3 respostas

Boa tarde Carlos, tudo bem?

Então... está convertendo sim. Se você abrir as ferramentas de desenvolvedor e der o comando console.log(peso) e console.log(altura), você vai ver que converteu sim.

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

O problema do seu código é outro. Repare que na hora de chamar a função calculaImc() você não colocou os argumentos peso e altura da forma correta. Você colocou a própria expressão matemática que calcula o imc.

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

Então é como se você tivesse colocado calculaImc(altura, ____), de forma que dentro da função calculaImc(), peso fosse igual à null.

Portanto, a solução é:

var imccalculado = calculaImc(peso, altura);
<meta charset="UTF-8">

<script>

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

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

    function calculaImc(altura, peso) {

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

    var nome = prompt ("Qual Seu Nome?");

    var peso = parseInt(prompt("Digite Seu peso."));

    var altura = parseInt(prompt("Digite Sau altura."));

    var imccalculado = calculaImc(peso, altura);

    mostra (nome + ", O Seu IMC é : " + imccalculado);

</script>

Bons estudos, espero ter ajudado!

Olá, colegas, muito boas as observações do Abraão, porém, se conferirmos o resultado do código, ele continua não correspondendo ao esperado.

É necessário modificar mais dois pontos no código apresentado pelo Carlos. O primeiro deles é remover o ParseInt, pois nesse caso ele vai arredondar a altura para um número inteiro e o que seria 1.80, vai acabar sendo 1 de altura. Relembrando o comentário do instrutor Flávio (Aula 07, item 18):

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

O outro ponto, é que quando chamamos a função, os parâmetros devem ser passados na mesma ordem que foram declarados nela:

 function calculaImc(altura, peso) {

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

Ou seja, primeiro a altura, depois o peso.

O código completo, então, ficaria assim:

<meta charset="UTF-8">

<script>

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

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

    function calculaImc(altura, peso) {

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

    var nome = prompt ("Qual Seu Nome?");

    var peso = prompt("Digite Seu peso.");

    var altura = prompt("Digite Sua altura.");

    var imcCalculado = calculaImc(altura, peso);

    mostra (nome + ", O Seu IMC é : " + imcCalculado);

</script>

Espero ter contribuído. Bons estudos!

É isso ai Abraão, mandou bem na explicação ;)