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

o que tem de errado no meu código?

<meta charset="UTF-8">

<script >

function mostra(frase) {

    document.write(frase);
}

function pularlinhas(){

    document.write("<br>");

}

function calculaimc (altura,peso){
    var imc=Math.round+peso/(altura*altura);
    mostra("o meu imc é "+calculaimc)
}
calculaimc(1.71,80);

</script>
3 respostas
<meta charset="UTF-8">

<script >

function mostra(frase) {

    document.write(frase);
}

function pularlinhas(){

    document.write("<br>");

}

function calculaimc (altura,peso){
    var imc=Math.round+peso/(altura*altura);
    mostra("o meu imc é "+calculaimc)
}
calculaimc(1.71,80);

</script>

Julio, a instrução Math.round() exige que você coloque os valores a serem arredondados entre parênteses.

E você estava invocando a function calculaImc de dentro da própria function, ao invés da variável imc.

E só como boa prática, procure usar o camel case, onde as functions ou var com nomes compostos usem maiúscula no começo das palavras intermediárias: 'pularLinhas' ao invés de 'pularlinhas' por exemplo.

<meta charset="UTF-8">

<script >

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

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

function calculaImc (altura,peso){
    var imc = Math.round(peso/(altura*altura));
    mostra("o meu imc é "+ imc)
}

calculaImc(1.71, 80);

</script>
solução!

Fala Julio, beleza?

O Math.round() que você está usando para arredondar os valores é uma função. Portando, assim como todas as vezes que você for utilizar funções, você deve colocar o valor a ser usado por ela entre parentese.

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

Nesse caso, o valor a ser usado pela função é o resultado da conta peso/altura².

Isso sempre vai acontecer quando você for usar uma função, outro exemplo é o seu calculaImc. Os valores são passados entre parentese.

calculaimc(1.71,80);

A lógica é a mesma :)

Outro erro é na linha 17:

mostra("o meu imc é "+calculaimc)

Você chamou a própia funçao dentro dela mesma. Nessa linha, você vai concatenar a frase "O meu imc é" com o valor do seu IMC, então, ao invés de "somar" com calculaimc, você deve somar com imc.

mostra("o meu imc é "+imc)

E como foi muito bem pontuado pela resposta que foi postada enquanto eu escrevia esse post, tente sempre usar CamelCase. Nessa "regra", as funções classes,etc começam com letra minúscula, mas sempre tem a primeira letra de cada palavra seguinda como maiusculas, facilitando a leitura. Um exemplo:

calculaImc(1.71, 80);

Percebe que fica mais fácil diferenciar a palavra Imc da palavra calcula? Não é uma regra que se deixar de seguir vai fazer seu código quebrar, mas vai torná-lo mais legível e é usada profissionalmente.

Espero ter ajudado :)