Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

A string da resposta do imc não conecta com as strings dos if else if e else

<?php

$altura = 1.74;
$peso = 60;
$imc = $peso / ($altura ** 2);

echo "O seu imc é de $imc e está ";

if($imc < 18.5){
    echo "abaixo";
}
else if($imc >=18.5 and $imc > 24.9){
    echo "normal";
}
else if($imc >=25 and $imc >29.9){
    echo "acima do peso";
}
else if($imc >=30 and $imc > 39.9){
    echo "Muito acima do peso (Obesidade)";
}
no final ele exibe assim: O seu imc é de 19.817677368212 e está
não completa a frase
3 respostas

Seus ifs estão errados, Rodrigo.

Confere a solução do desafio pra você entender a diferença.

;-)

Ainda não consegui entender onde estou errando

solução

Vamos lá, Rodrigo.

$altura = 1.74;
$peso = 60;
$imc = $peso / ($altura ** 2); // nesse caso, é mais ou menos 19,8

Analisando todos os seus casos, vemos que não tem nenhum caso que cubra esse cenário.

if($imc < 18.5)

19,8 não é menor do que 18,5.

else if($imc >=18.5 and $imc > 24.9)

19,8 não é maior do que 24.9

if($imc >=25 and $imc >29.9)

19,8 não é maior ou igual a 25 nem maior do que 29.0

else if($imc >=30 and $imc > 39.9)

19,8 não é maior ou igual a 30 nem maior do que 39.9.

Seus casos estão errados, entende? A solução proposta foi a seguinte:

if ($imc < 18.5) {
    echo "abaixo";
} elseif ($imc < 25) {
    echo "dentro";
} else {
    echo "acima";
}

Entraria no primeiro elseif, pois 19,8 é menor do que 25.

Espero que tenha esclarecido. :-)