題目 : 給三個邊長組成的三角形,判斷是不等邊、等邊,還是等腰三角形
提示
有效三角形的組成條件:
- 兩邊和大於第三邊
- 兩邊差小於第三邊
判斷
等邊三角形 : 三邊等長
等腰三角形 : 只有兩邊等長
不等邊三角形 : 三邊都不等長
期望結果
一開始宣告 3 個邊長的變數
let a = Number(prompt('請輸入第一條三角形邊長 (a)'))
let b = Number(prompt('請輸入第二條三角形邊長 (b)'))
let c = Number(prompt('請輸入第三條三角形邊長 (c)'))
有效三角形的組成條件:
兩邊和大於第三邊
(a + b) > c , (b + c) > a , (a + c) > b兩邊差小於第三邊
(a - b) < c , (b - c) < a , (a - c) < b
(b - a) < c , (c - b) < a , (c - a) < b三邊長都必須大於零
a > 0 , b > 0 , c > 0
等邊三角形
a === b && b === c
等腰三角形
(a === b && b !== c) || (b === c && c !== a) || (c === a && a !== b))
一開始寫程式
if (!((a + b) > c) || !((b + c) > a) || !((c + a) > b) || !((a - b) < c) || !((b - a) < c) || !((b - c) < a) || !((c - b) < a) || !((c - a) < b) || !((a - c) < b) || !(a > 0) || !(b > 0) || !(c > 0))
這段程式碼只要成立其中一個條件,就是 true,結果是 'invalid' ,是無效三角形,但助教說這樣不好閱讀,要我試著把否定的判斷改為正向的,並將同種類型的判斷項目放在同一行
所以我改成
if ((a + b) <= c || (b + c) <= a || (c + a) <= b ||
(a - b) >= c || (b - a) >= c || (b - c) >= a || (c - b) >= a || (c - a) >= b || (a - c) >= b ||
a <= 0 || b <= 0 || c <= 0)
!((a + b) > c) 改成 (a + b) <= c , !() 否定改為正向,就代表要寫出無效三角形的判斷式 , 而 2 、 2 、 4 是無效三角形 , 帶入 (a + b) <= c , (2 + 2) <= 4 , 確實成立
!((a - b) < c) 改成 (a - b) >= c , 4 、 2 、 2 是無效三角形 , 帶入 (a - b) >= c , (4 - 2) >= 2 , 確實成立
a > 0 改成 a <= 0 , 只要邊長是 0 或 小於 0 , 也是無效三角形
改後程式碼