hoj2036

求多边形面积,选定(0,0)点,用三角形法求,求三角形面积时用叉积,把式子展开并合并同类项可得模板中的公式。

View Code
#include <iostream>
#include
<cstdio>
#include
<cstdlib>
#include
<cstring>
using namespace std;

#define maxn 101

struct XPoint
{
double x, y;
}point[maxn];

int n;

void input()
{
for (int i = 0; i < n; i++)
{
scanf(
"%lf%lf", &point[i].x, &point[i].y);
}
}

double areaofp(int vcount, XPoint plg[])
{
int i;
double s;
if (vcount<3) return 0;
s
=plg[0].y*(plg[vcount-1].x-plg[1].x);
for (i=1;i<vcount;i++)
s
+=plg[i].y*(plg[(i-1)].x-plg[(i+1)%vcount].x);
return s/2;
}

int main()
{
//freopen("D:\\t.txt", "r", stdin);
while (scanf("%d", &n) != EOF && n != 0)
{
input();
printf(
"%.1f\n", areaofp(n, point));
}
return 0;
}
posted @ 2011-03-29 20:22  金海峰  阅读(136)  评论(0编辑  收藏  举报