Pagini recente » Cod sursa (job #3260636) | Cod sursa (job #3260696) | Cod sursa (job #2907392) | Cod sursa (job #2525143) | Cod sursa (job #3288690)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
const int MAXN = 1e5 + 5;
struct Point {
double x;
double y;
};
double arieTriunghi ( Point A, Point B ) {
return ( A.x * B.y - A.y * B.x);
}
int N, x, y;
double aria;
//aria poligonului o putem afla prin triangularizarea acestuia
// iar apoi facem suma ariilor
// luam arbitrat punctul P(0, 0) cu care formam triunghiuri (P Ai Ai+1) (consideram si ca A1 = An+1)
// aria unui triunghi o sa fie 1/2(xi*yi+1 - yi*xi+1 )
int main() {
fin >> N;
Point first, firstPoint;
fin >> first.x >> first.y;
firstPoint = first;
//mai usor asa fara sa retin un vector de puncte
for ( int i = 1; i < N; ++ i ) {
Point second;
fin >> second.x >> second.y;
aria += arieTriunghi(first, second);
first = second;
}
//ultimul triunghi cu PAnA1
//first ii An
aria += arieTriunghi(firstPoint, first);
aria /= 2;
// fixed << setprecision(6) = precizie de pana la 10^-5
// fabs = valoarea in modul
fout << fixed << setprecision(6) << fabs(aria);
}