/*
* 题目要求:计算多边形面积
* 方法:把n多边形分割成n-2个三角形,分别求和,然后相加
* 注意:分割的所有三角形有一个公共的顶点,这里选择0点位公共点
* 注:题中给出的点的顺序为逆时针
* auther:Try86
*/
/*
* 叉乘的性质:设两向量P和Q
* 1.P ×Q > 0 则Q在P的逆时针方向
* 2.P ×Q < 0 则Q在P的顺时针方向
* 3.P ×Q = 0 则Q和P共线,方向可能相同也可能不相同
*/
/*
* 实现一
*/
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
const int N = 100;
struct point {
double x;
double y;
}p[N];
double crossProd(point A, point B, point C) {//叉乘求平行四边形的有向面积
return (B.x-A.x)*(C.y-A.y) - (C.x-A.x)*(B.y-A.y);
}
double compArea(int n) {//求面积
double area = 0;
for (int i=2; i<n; ++i) area += crossProd(p[0], p[i-1], p[i]);
// return fabs(area) * 0.5;
return area * 0.5;
}
int main() {
int n;
while (scanf("%d", &n), n) {
for (int i=0; i<n; ++i) scanf("%lf%lf", &p[i].x, &p[i].y);
double area = compArea(n);
printf ("%.1lf\n", area);
}
return 0;
}
/*
* 实现二
*/
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
const int N = 100;
struct point {
double x;
double y;
}p[N];
double crossProd(point A, point B) {
return A.x*B.y - B.x*A.y;
}
double compArea(int n) {
double area = 0;
p[n].x = p[0].x;
p[n].y = p[0].y;
for (int i=0; i<n; ++i) area += crossProd(p[i], p[i+1]);
return fabs(area) * 0.5;
}
int main() {
int n;
while (scanf("%d", &n), n) {
for (int i=0; i<n; ++i) scanf ("%lf%lf", &p[i].x, &p[i].y);
double area = compArea(n);
printf ("%.1lf\n", area);
}
return 0;
}