题目链接:题目链接
image.png
解题思路:在求N边形面积的时候,可以将多边形分解成为N-2个三角形的面积相加,如在算5边形的时候,可以分解成3个三角形,之后计算其面积再进行相加。如下图:
image.png
image.png
代码实现如下:
以(0.0)作为定点
#include<stdio.h>
#include<math.h>
typedef struct Point
{
double x, y; //定义坐标点
}point;
point p[105];
double area(point *p, int n)
{
if (n < 3)
return 0;
double sum = 0;
p[n + 1] = p[1];
for (int i = 1;i <= n;i++)
sum += p[i].x*p[i + 1].y - p[i].y*p[i + 1].x;//计算每个三角形的面积
sum = fabs(sum) / 2.0;
printf("%.1lf\n", sum);
}
int main(void)
{
double area(point *p, int n);
int n;
while (scanf("%d", &n) != EOF)
{
if (n == 0)
continue;
for (int i = 1;i <= n;i++)
scanf("%lf %lf", &p[i].x, &p[i].y);
area(p, n);
}
}