Try   HackMD

20-1 三角形辨別

CHAWTeam

目錄:DICE C語言程式破解

題目

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

提示:若 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)

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

輸入格式
輸入僅一行包含三正整數,三正整數皆小於 30,001,兩數之間有一空白。

輸出格式
輸出共有兩行,第一行由小而大印出此三正整數,兩數字之間以一個空白間格,最後 一個數字後不應有空白;第二行輸出三角形的型別:
    若無法構成三角形時輸出「No」;
    若構成鈍角三角形時輸出「Obtuse」;
    若直角三角形時輸出「Right」;
    若銳角三角形時輸出「Acute」。

範例一:輸入
3 4 5

範例一:正確輸出
3 4 5
Right

(說明)
a×a + b×b = c×c
成立時為直角三角形。

範例二:輸入
101 100 99

範例二:正確輸出
99 100 101
Acute

(說明)
邊長排序由小到 大輸出,
a×a + b×b > c×c
成立時為銳角三角形。

範例三:輸入
10 100 10

範例三:正確輸出
10 10 100
No

(說明)
由於無法構成三角形,
因此第二行須印出 「No」。

知識點:條件判斷、迴圈

程式碼

#include <stdio.h> int main() { int a, b, c, t; scanf("%d %d %d", &a, &b, &c); if (a > b) { t = a; a = b; b = t; } if (b > c) { t = b; b = c; c = t; } if (a > b) { t = a; a = b; b = t; } printf("%d %d %d\n", a, b, c); //三角形條件 if (a + b <= c) printf("No\n"); //鈍角三角形 else if (a * a + b * b < c * c) printf("Obtuse\n"); //直角三角形 else if (a * a + b * b == c * c) printf("Right\n"); //銳角三角形 else if (a * a + b * b > c * c) printf("Acute\n"); return 0; }
#include<iostream> #include<algorithm> using namespace std; int main(){ int a[3],num; while(cin>>a[0]>>a[1]>>a[2]){ sort(a,a+3,less<int>()); for(int i=0;i<3;i++) { cout << a[i] << " "; } cout <<endl; if(a[0]+a[1]<=a[2]) { cout <<"No" <<endl; } else if(a[0]*a[0]+a[1]*a[1] < a[2]*a[2]) cout << "Obtuse" <<endl; else if(a[0]*a[0]+a[1]*a[1] == a[2]*a[2]) cout << "Right" <<endl; else if(a[0]*a[0]+a[1]*a[1] > a[2]*a[2]) cout << "Acute" <<endl; } return 0; }

執行

輸入

3 4 5

輸出

3 4 5
Right

查看我們在HackMD上的所有筆記
目錄:DICE C語言程式破解


👉【幫我們一個忙!】👈

👋如果您喜歡這篇文章,請在下方按5個Like!
❤您的支持是我們最大的動力!

您只要登入帳號(Facebook、Google),在下方按5個Like,我們就會收到來自LikeCoin基金會的贊助。
您只需要支持我們,完全不會花到錢!