2012-01-20 61 views
1

我有關於條件的問題。問題是: 三角形的任何兩邊的組合長度必須大於第三邊的長度以形成三角形。例如,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,它還顯示三角形,即使答案不是三角形。誰能告訴我爲什麼? TQ

+0

順便說一句,這是作業嗎?如果是這樣,相應標記。 – J0HN

回答

0

因爲所有必須符合這三個條件,而不是一。更換

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

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

,你應該罰款

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