声明符合条件

时间:2012-01-20 09:15:14

标签: php conditional-statements

我对病情有疑问。问题是: 三角形的任意两边的组合长度必须大于第三边的长度,以使这些区段形成三角形。例如,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并显示Triangle。对于数字:24,5和15它也显示Triangle甚至答案是非三角形。谁能告诉我为什么? TQ

2 个答案:

答案 0 :(得分:0)

因为必须满足这三个条件中的所有,而不是单个。取代

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

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

你应该没问题

答案 1 :(得分:0)

如果你认为三角形的两个短边的总长度必须大于最长边的长度,那就更容易了...所以如果你先按顺序对边长进行排序,那么你就知道哪个是最短的,也是最长的,然后“if”逻辑被简化

// 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";  
}