【PTA】習題3-5 三角形判斷(c)

題目描述

給定平面上任意三個點的座標(x​1​​,y​1​​)、(x​2,y​2)、(x​3​,y​3),檢驗它們能否構成三角形。

輸入格式:

輸入在一行中順序給出六個[−100,100]範圍內的數字,即三個點的座標x​1、y​1、x​2、y​2、x3、y​3。

輸出格式:

若這3個點不能構成三角形,則在一行中輸出“Impossible”;若可以,則在一行中輸出該三角形的周長和麪積,格式爲“L = 周長, A = 面積”,輸出到小數點後2位。

輸入樣例1:

4 5 6 9 7 8

輸出樣例1:

L = 10.13, A = 3.00

輸入樣例2:

4 6 8 12 12 18

輸出樣例2:

Impossible

思路

判斷是否能構成三角形的一點就是兩邊相加是否大於第三邊,若小於等於則一定不能構成三角形
已知三條邊求三角形面積可以用海倫公式:
p=a+b+c2()p=\frac{a+b+c}{2} (半周長)
S=p(pa)(pb)(pc)S=√p(p-a)(p-b)(p-c)

代碼

#include<stdio.h>
#include<math.h>

int main(){
    double x1,y1,x2,y2,x3,y3;
    double l1,l2,l3; //邊長
    scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3);
    l1=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    l2=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
    l3=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
    if(l1+l2<=l3||l1+l3<=l2||l2+l3<=l1){
        printf("Impossible");
        return 0;
    }
    double L,A; //周長 面積
    double p;  //半周長
    L=l1+l2+l3;
    p=L/2;
    A=sqrt(p*(p-l1)*(p-l2)*(p-l3));
    printf("L = %.2f, A = %.2f",L,A);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章