习题3-5 三角形判断(15 分)

习题3-5 三角形判断(15 分)

给定平面上任意三个点的坐标$(x_1,y_1)、(x_2,y_2)、(x_3,y_3)$,检验它们能否构成三角形。

输入格式:

输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标$x_1、y_1、x_2、y_2、x_3、y_3$。

输出格式:

若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。

输入样例1:

1
4 5 6 9 7 8

输出样例1:

1
L = 10.13, A = 3.00

输入样例2:

1
4 6 8 12 12 18

输出样例2:

1
Impossible
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h> 
int main(void) {
double x1, y1, x2, y2, x3, y3;
double side1, side2, side3;
double p, perimeter, area;
scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
side1 = sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
side2 = sqrt((x3 - x1) * (x3 - x1) + (y3 - y1) * (y3 - y1));
side3 = sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2));
if(side1 + side2 > side3 && side1 + side3 > side2 && side2 + side3 > side1) {
perimeter = side1 + side2 + side3;
p = 0.5 * perimeter;
area = sqrt(p * (p - side1) * (p - side2) * (p - side3));
printf("L = %.2f, A = %.2f\n", perimeter, area);
}
else
printf("Impossible");
return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×