Pagini recente » Cod sursa (job #2289748) | Cod sursa (job #1583393) | Cod sursa (job #1925741) | Cod sursa (job #534035) | Cod sursa (job #2366360)
#include <cstdio>
#define N 100005
using namespace std;
FILE *f,*g;
struct bla
{
double x,y;
}p[N];
double det(bla a, bla b)
{
double x1=a.x, x2=b.x, y1=a.y, y2=b.y;
return (x1*y2-x2*y1);
}
int main()
{
f=fopen("aria.in","r");
g=fopen("aria.out","w");
int n;
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
fscanf(f,"%lf %lf",&p[i].x,&p[i].y);
///ATENTIE, punctele sunt datae in ordine trigonometrica
p[n+1]={p[1].x,p[1].y};
double arie=0;
///nu folosim modul pt ca ariile negative vor "anula" zonele
///corespunzătoare ariilor pozitive care se află în afara poligonului
for(int i=1;i<=n;++i)
arie+=det(p[i],p[i+1]);
if(arie<=0)
arie*=(-1);
fprintf(g,"%0.7lf",arie/2);
fclose(f);
fclose(g);
return 0;
}