/*解题思路:
对于求多边形的面积,要考虑到是凸多边形还是凹多边形
凸多边形可以将其分解为多个三角形在求解,凹多边形则不能这样做
对于求多边形的面积,关键是对叉乘的运用
将各个点连成环进行叉乘
多边形面积 = (相邻点之间叉乘和 )*0.5 注意首尾为同一个点,组成环
| | | | | | | |
| x1 y1| | x2 y2| | x3 y3| |x4 y4 |
s= | x2 y2| *0.5 + | x3 y3| *0.5 +| x4 y4| *0.5 +|x1 y1 | *0.5
| | | | | | | |
| | | | | | | |
要记得首位和末位是一个点,这样才能组成环 */
#include<stdio.h>
struct san
{
int x;
int y;
}zb[110];
int main()
{
int n;
int i,j;
int sum;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%d%d",&zb[i].x,&zb[i].y);
zb[n].x=zb[0].x;
zb[n].y=zb[0].y;
//记得最后再将 (x1,y1)赋值给(xn,yn),这样才能组成一个环
sum=0;
for(i=0;i<n;i++)
sum+=(zb[i].x*zb[i+1].y-zb[i].y*zb[i+1].x);
printf("%.1lf\n",(double)sum/2);
//记得最后再除以 2
}
return 0;
}
对于求多边形的面积,要考虑到是凸多边形还是凹多边形
凸多边形可以将其分解为多个三角形在求解,凹多边形则不能这样做
对于求多边形的面积,关键是对叉乘的运用
将各个点连成环进行叉乘
多边形面积 = (相邻点之间叉乘和 )*0.5 注意首尾为同一个点,组成环
| | | | | | | |
| x1 y1| | x2 y2| | x3 y3| |x4 y4 |
s= | x2 y2| *0.5 + | x3 y3| *0.5 +| x4 y4| *0.5 +|x1 y1 | *0.5
| | | | | | | |
| | | | | | | |
要记得首位和末位是一个点,这样才能组成环 */
#include<stdio.h>
struct san
{
int x;
int y;
}zb[110];
int main()
{
int n;
int i,j;
int sum;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%d%d",&zb[i].x,&zb[i].y);
zb[n].x=zb[0].x;
zb[n].y=zb[0].y;
//记得最后再将 (x1,y1)赋值给(xn,yn),这样才能组成一个环
sum=0;
for(i=0;i<n;i++)
sum+=(zb[i].x*zb[i+1].y-zb[i].y*zb[i+1].x);
printf("%.1lf\n",(double)sum/2);
//记得最后再除以 2
}
return 0;
}