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

Tenho 2 resultados

Eu consegui fazer o código, mas quando eu coloco parseInt antes do prompt para considerar um número, ele me da 2 resultados. código sem o parseInt:

function IMC(peso, altura){
    return(peso / (altura * altura));
    mostra("Seu IMC é " + IMC + " kg/m2");
}

var nome = prompt("digite seu nome: ");
var peso = prompt(nome + ", digite seu peso: ");
var altura = prompt(nome + ", digite sua altura: ");    
var imcCalculado = IMC(peso, altura);

mostra(imcCalculado)

com parseInt:

function IMC(peso, altura){

    return(peso / (altura * altura));
    mostra("Seu IMC é " + IMC + " kg/m2");
}

var nome = prompt("digite seu nome: ");
var peso = parseInt(prompt(nome + ", digite seu peso: "));
var altura = parseInt(prompt(nome + ", digite sua altura: "));    
var imcCalculado = IMC(peso, altura);

mostra(imcCalculado)
3 respostas

E aí Thiago, tranquilo?

Pelo que estou vendo o problema é que você está chamando a função mostra duas vezes: uma dentro da função IMC e outra logo depois da linha

var imcCalculado = IMC(peso, altura);

solução!

Oi Thiago Viana boa tarde, primeiramente gostaria de esclarecer que nenhum código que é colocado depois do return da função é executado, ou seja essa linha nunca é executada dentro seu algoritmo:

mostra("Seu IMC é " + IMC + " kg/m2");

Você pode removê-la sem afetar o restante do programa, agora indo para o problema em questão: Quando a execução vai lá pra função que calcula o Imc e lá temos a divisão e multiplicação o Javascript converte automaticamente o valor das strings peso e altura para números e faz a operação normalmente, por isso o resultado vem normal.

Na segunda forma quando você utiliza o parseInt, isso não acontece porque quando atribuo o valor para altura de por exemplo 1.74 ele automaticamente converte para o inteiro 1, e todo número multiplicado ou dividido por 1 é ele mesmo.

O casting correto da altura seria com o parseFloat que é o cast que o Javascript fez por baixo dos panos no primeiro cálculo.

A implementação seria mais ou menos assim:

<script>
function mostra(frase){
    document.write(frase);
}

function IMC(peso, altura){
    return(peso / (altura * altura));
}

var nome = prompt("digite seu nome: ");
var peso = parseInt(prompt(nome + ", digite seu peso: "));
var altura = parseFloat(prompt(nome + ", digite sua altura: "));    
var imcCalculado = IMC(peso, altura);
mostra(imcCalculado);
</script>

Espero ter ajudado e bons estudos.

Opa. Realmente nem me toquei na questão do return. Bem observado, Maison.