Tipos de Triângulos – beecrowd | 1045

Neste problema somos solicitados a ler 3 valores de ponto flutuante A, B e C e ordená-los em ordem decrescente de modo que o lado A represente o maior dos 3 lados. Em seguida precisamos determinar o tipo de triângulo que esses três lados formam com base em vários casos.

Primeiro lemos os valores de entrada usando a função fscanf que lê entrada formatada do STDIN. Em seguida armazenamos esses valores em um array $tri e usamos a função rsort para ordená-los em ordem decrescente. Depois da ordenação usamos a função list para atribuir os valores ordenados de volta para $A$B e $C.

fscanf(STDIN, "%f %f %f", $A, $B, $C);
$tri = [$A,$B,$C];
rsort($tri);
list($A,$B,$C) = $tri;

Em seguida verificamos se o triângulo é válido verificando se $A >= $B + $C. Se não for válido imprimimos NAO FORMA TRIANGULO.

if ($A >= $B   $C) {
echo "NAO FORMA TRIANGULO\n";
}

Se o triângulo for válido verificamos vários casos usando instruções condicionais. Usamos a função pow para calcular o quadrado de um número.

if (pow($A,2) == pow($B,2)   pow($C,2)) {
echo "TRIANGULO RETANGULO\n";
}
if (pow($A,2) > pow($B,2) pow($C,2)) {
echo "TRIANGULO OBTUSANGULO\n";
}
if (pow($A,2) < pow($B,2) pow($C,2)) {
echo "TRIANGULO ACUTANGULO\n";
}
if ($A == $B && $B == $C) {
echo "TRIANGULO EQUILATERO\n";
} elseif ($A == $B || $A == $C || $B == $C) {
echo "TRIANGULO ISOSCELES\n";
}

O código completo fica assim

<?php
fscanf(STDIN, "%f %f %f", $A, $B, $C);
$tri = [$A,$B,$C];
rsort($tri);
list($A,$B,$C) = $tri;

if ($A >= $B $C) {
echo "NAO FORMA TRIANGULO\n";
} else {
if (pow($A,2) == pow($B,2) pow($C,2)) {
echo "TRIANGULO RETANGULO\n";
}
if (pow($A,2) > pow($B,2) pow($C,2)) {
echo "TRIANGULO OBTUSANGULO\n";
}
if (pow($A,2) < pow($B,2) pow($C,2)) {
echo "TRIANGULO ACUTANGULO\n";
}
if ($A == $B && $B == $C) {
echo "TRIANGULO EQUILATERO\n";
} elseif ($A == $B || $A == $C || $B == $C) {
echo "TRIANGULO ISOSCELES\n";
}
}
?>

Deixe um comentário