#include<stdio.h>
int main(void) {
int n;
while (scanf_s("%d", &n) && n) {
int a[100], b[100];
int i;
for (i = 0; i < n; i++) {
scanf_s("%d%d", &a[i], &b[i]);
}
double sum=0,j;
for (i = 0; i < n - 2; i++) {
j = a[0] * b[i + 1] - b[0] * a[i + 1] + a[i + 1] * b[i + 2] - b[i + 1] * a[i + 2] + a[i + 2] * b[0] - b[i + 2] * a[0];
sum = j + sum;
}
printf("%.1f\n", sum/2);
}
}
关键突破是知道用把多边形分解成多个三角形,用公式表示各个三角形的面积,其中第一个点不要变动。
第一个点变动就错了。