我对病情有疑问。问题是: 三角形的任意两边的组合长度必须大于第三边的长度,以使这些区段形成三角形。例如,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
答案 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";
}