杭电OJ-2036

题目链接:题目链接

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);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容