題目鏈接:題目鏈接
image.png
解題思路:在求N邊形面積的時候尔觉,可以將多邊形分解成為N-2個三角形的面積相加玄渗,如在算5邊形的時候,可以分解成3個三角形芬探,之后計算其面積再進行相加。如下圖:
image.png
image.png
代碼實現(xiàn)如下:
以(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);
}
}