Заявление соответствует условию - PullRequest
1 голос
/ 20 января 2012

У меня есть вопрос относительно состояния.Вопрос заключается в том, что общая длина любых двух сторон треугольника должна быть больше, чем длина третьей стороны, чтобы сегменты образовывали треугольник.Например, 8, 6 и 12 могут образовывать треугольник, потому что сумма любых двух из трех сегментов больше, чем третий сегмент.Однако 24, 5 и 15 не могут образовывать треугольник, потому что сумма сегментов 5 и 15 не превышает длину сегмента 24.

поэтому мое кодирование выглядит следующим образом:

$aa = $_GET['a'];
$bb = $_GET['b'];
$cc = $_GET['c'];
if(($aa + $bb > $cc) || ($bb + $cc > $aa) || ($aa + $cc > $bb)){
    echo"Triangle";
}

else{
    echo"Not Triangle";
}

он может работать, но я проверяю эти числа: 8, 6 и 12 и отображаю Треугольник.для чисел: 24, 5 и 15 также отображается треугольник, даже если ответ не является треугольником.Кто-нибудь может сказать мне, почему?TQ

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Это проще, если учесть, что общая длина двух более коротких сторон треугольника должна быть больше, чем длина самой длинной стороны ... поэтому, если вы сначала отсортируете длины сторон по порядку, чтобы вы знали, какие из них являютсякратчайший и самый длинный, тогда логика «если» упрощается

// Put our lengths into an array so that we can manipulate them more esily
$sideLengths = array($_GET['a'],$_GET['b'],$_GET['c']);
// Sort the array so that it's shortest to longest
sort($sideLengths);
// Test the sum of the two short sides against the longest
if (($sideLength[0] + $sideLength[1]) > $sideLength[2])
    echo"Triangle";  
} else {  
    echo"Not Triangle";  
}
0 голосов
/ 20 января 2012

Поскольку все из этих трех условий должны быть выполнены, а не один один. Заменить

if(($aa + $bb > $cc) || ($bb + $cc > $aa) || ($aa + $cc > $bb)){

с

if(($aa + $bb > $cc) && ($bb + $cc > $aa) && ($aa + $cc > $bb)){

и с тобой все будет в порядке

...