c294. APCS-2016-1029-1三角形辨別 - 高中生程式解題系統

題目:

三角形除了是最基本的多邊形外,亦可進一步細分為鈍角三形、直角三角形及銳角三角形。若給定三個線段的長度,透過下列公式運算,即可得知此三線段能否構成三角形,亦可判斷是直角、銳角和鈍角三角形。

提示:若a、b、c為三個線段的邊長,且c為最大值,則

若 a+b ≦ c      ,無法構成三角形

若 a×a+b×b < c×c  ,構成鈍角三角形(Obtuse triangle)

若 a×a+b×b = c×c  ,構成直角三角形(Right triangle)

若 a×a+b×b > c×c  ,構成銳角三角形(Acute triangle)

請設計程式以讀入三個線段的長度判斷並輸出此三線段可否構成三角形?若可,判斷 並輸出其所屬三角形類型

<aside> 💡

此題使用if_else即可,還有排序不要忘了。

python 排序: .sort()

c++ 排序:sort(a,a+n) a:陣列名稱/n:陣列大小

</aside>

python

nums = list(map(int,input().split()))

#比較三邊長
a,b,c =sorted(nums)

print(a,b,c)

if a+b <= c:
    print('No')
elif a*a + b*b == c*c:
    print('Right')
elif a*a + b*b < c*c:
    print('Obtuse')
elif a*a + b*b > c*c:   
    print('Acute')


c++

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int data[3];
    for (int i=0;i<3;i++)
        cin>>data[i];

    sort(data,data+3);
    
    cout<<data[0]<<" "<<data[1]<<" "<<data[2]<<"\\n";

    int a =pow(data[0],2),b =pow(data[1],2),c =pow(data[2],2);

    if(c >a + b)
        cout<<"No";
    else if(c > a+b)
        cout<<"Obtuse";
    else if(c == a+b)
        cout<<"Right";
    else if(c < a+b)
        cout<<"Acute";

    return 0;
}