Pergunta

Não tenho certeza do que estou perdendo, mas não consigo $c para produzir corretamente.

<?php

function pythThm($a, $b){
    $a2 = pow($a, 2);
    $b2 = pow($b, 2);
    $c = sqrt($a2 + $b2);
    if(is_int($c)){return $c;}
}

echo pythThm(3, 4);
//outputs nothing, should be 5

?>

Peço desculpas pela pergunta de iniciante.

Solução para o problema:

<?php
function pythThm($a, $b){
$a2 = pow($a, 2);
$b2 = pow($b, 2);
$c = sqrt($a2 + $b2);
if($c - round($c) == 0){return $c;}
}

echo pythThm(4, 4); 
//returns nothing
echo pythThm(3,4);
//returns 5
?>

Obrigado a todos que responderam...Leia as informações completas sobre a função na próxima vez!

Foi útil?

Solução

sqrt retorna um float, o que não é int, então sua função não retorna nada.Apenas deixe de lado is_int verificar?

Outras dicas

sqrt sempre retorna um float.Sua declaração if é sempre falsa.

Se você quiser fazer a verificação, faça o seguinte:

$i = (int) $c;

if($c == $i) return $c

O que isso faz é converter o float em um int, e se o float $c e o int $i são iguais, então ele retornará

sqrt retorna um float, é por isso is_int é sempre falso.

Se você realmente deseja verificar se é um número inteiro, você pode usar:

if ((int)$c == $c)
    return $c;

Isso é um erro de digitação no seu resultado

function pythThm($a, $b){
    $a2 = pow($a, 2);
    $b2 = pow($b, 2);
    $c = sqrt($a2 + $b2);
    return (int)$c;
}

echo pythThm(3, 4);
<?php

function pythThm($a, $b){
    $a2 = pow($a, 2);
    $b2 = pow($b, 2);
    $c =  sqrt($a2 + $b2);
   return $c;
}

echo pythThm(3, 4);
//outputs nothing, should be 5

?>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top