三角形面积

题目

输入平面上任意三个点的坐标(x1,y1)、 (x2,y2)、 (x3,y3),检验它们能否构成三角形。如果3个点能构成一个三角形,输出周长和面积(保留2位小数);否则输出“Impossible”。

分析

image-20231117114233147

解决这题的核心在于利用勾股定理计算三个给定点所构成的三角形的边长。计算完三条边的长度后,我们必须进行判断,确保这三条边满足构成三角形的条件,即任意两边之和大于第三边。一旦确认可以构成三角形,我们就可以使用海伦公式来求解三角形的面积,海伦公式具体如下:

image-20231117114246848

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <math.h>

int main()
{
double x1, y1, x2, y2, x3, y3;
double p, res1, res2;
printf("请输入构成三角形的三个点:");
scanf("%lf%lf,%lf%lf,%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
double a = sqrt(pow(x1 - x2, 2.0) + pow(y1 - y2, 2.0));
double b = sqrt(pow(x1 - x3, 2.0) + pow(y1 - y3, 2.0));
double c = sqrt(pow(x2 - x3, 2.0) + pow(y2 - y3, 2.0));
if ((a + b > c) && (a + c > b) && (b + c) > c)
{
res1 = a + b + c; // 周长
p = (a + b + c) / 2;
res2 = sqrt(p * (p - a) * (p - b) * (p - c)); // 面积
printf("周长为:%.2lf\n面积为:%.2lf", res1, res2);
}
else
{
printf("Impossible");
}

return 0;
}