題目 : 給三個邊長組成的三角形,判斷是不等邊、等邊,還是等腰三角形
提示
有效三角形的組成條件:
- 兩邊和大於第三邊
- 兩邊差小於第三邊
判斷
等邊三角形 : 三邊等長
等腰三角形 : 只有兩邊等長
不等邊三角形 : 三邊都不等長
期望結果
一開始宣告 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 , 也是無效三角形
改後程式碼
你可能感興趣的文章
留言討論
您好
我目前也在做一樣的問題,想請問在三角形的第二個條件:兩邊相減需小於第三邊長這部分,如果在負數的情況下就不會成立三角形了。
但是在程式中沒有看到這部分的條件,假設我三個邊長3、5、12
即使上述條件都成立了,但(3-5)<12出來的結果是無效三角形,這種狀況該怎麼歸類呢?謝謝您
你好,我嘗試著使用
let a = Number(prompt('請輸入第一條三角形邊長 (a)'))
let b = Number(prompt('請輸入第二條三角形邊長 (b)'))
let c = Number(prompt('請輸入第三條三角形邊長 (c)'))
但他沒有像你右邊顯示出數字
而是只讀出第一行的>請輸入第一條三角形邊長(a)>
請問這樣是哪裡出了問題呢?
https://replit.com/@dog0973621118/Jie-Ti#index.js