解題 - 驗證三角形


Jul 23, 2021

題目 : 給三個邊長組成的三角形,判斷是不等邊、等邊,還是等腰三角形

提示

有效三角形的組成條件:

  1. 兩邊和大於第三邊
  2. 兩邊差小於第三邊

判斷

等邊三角形 : 三邊等長
等腰三角形 : 只有兩邊等長
不等邊三角形 : 三邊都不等長

期望結果

一開始宣告 3 個邊長的變數

let a = Number(prompt('請輸入第一條三角形邊長 (a)'))
let b = Number(prompt('請輸入第二條三角形邊長 (b)'))
let c = Number(prompt('請輸入第三條三角形邊長 (c)'))

有效三角形的組成條件:

  1. 兩邊和大於第三邊
    (a + b) > c , (b + c) > a , (a + c) > b

  2. 兩邊差小於第三邊
    (a - b) < c , (b - c) < a , (a - c) < b
    (b - a) < c , (c - b) < a , (c - a) < b

  3. 三邊長都必須大於零
    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 , 也是無效三角形

改後程式碼

#解題方法






你可能感興趣的文章

Day 127

Day 127

[Day 2] JS in Pipeline (2): Docker and Local Development Environment (2)

[Day 2] JS in Pipeline (2): Docker and Local Development Environment (2)

解題 - 找出所有等腰三角形

解題 - 找出所有等腰三角形






留言討論




dog0973621118 Feb 28, 2022


dog0973621118 Feb 28, 2022

你好,我嘗試著使用
let a = Number(prompt('請輸入第一條三角形邊長 (a)'))
let b = Number(prompt('請輸入第二條三角形邊長 (b)'))
let c = Number(prompt('請輸入第三條三角形邊長 (c)'))
但他沒有像你右邊顯示出數字
而是只讀出第一行的>請輸入第一條三角形邊長(a)>
請問這樣是哪裡出了問題呢?
https://replit.com/@dog0973621118/Jie-Ti#index.js

catcolor2020 Mar 04, 2022

你好,按 Run 之後,要先輸入數字,再按 Enter,就可以看到下一行了,以此類推,輸入3次數字後,就能判斷是哪種三角形了

https://replit.com/@catcolor/A18-Xuan-Xiu-Qi-Mo-Kao#index.js



ta828383 Mar 14, 2022

您好
我目前也在做一樣的問題,想請問在三角形的第二個條件:兩邊相減需小於第三邊長這部分,如果在負數的情況下就不會成立三角形了。
但是在程式中沒有看到這部分的條件,假設我三個邊長3、5、12
即使上述條件都成立了,但(3-5)<12出來的結果是無效三角形,這種狀況該怎麼歸類呢?謝謝您

catcolor2020 Mar 15, 2022

你好,把三個邊長3、5、12,帶入修改後判斷式,
(a - b) >= c || (b - a) >= c || (b - c) >= a || (c - b) >= a || (c - a) >= b || (a - c) >= b,結果是 (12 - 5) >= 3 或 (12 - 3) >= 5
,符合 (c - b) >= a 或是 (c - a) >= b,所以是無效三角形

https://replit.com/@catcolor/A18-Xuan-Xiu-Qi-Mo-Kao#index.js





2
2
2