Pagini recente » Cod sursa (job #2513093) | Cod sursa (job #2298817) | Cod sursa (job #2117460) | Cod sursa (job #65059) | Cod sursa (job #1670889)
#include <fstream>
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
struct cartezian
{
int x,y;
};
int getTriArea(const cartezian &A, const cartezian &B, const cartezian &C)
{
int d1 = A.x*B.y + B.x*C.y + C.x*A.y;
int d2 = C.x*B.y + B.x*A.y + A.x*C.y;
int area = d1 - d2;
if(area < 0)
area = (-1)*area;
area /= 2;
return area;
}
cartezian getCoordG (cartezian const *points, unsigned length)
{
cartezian G;
G.x = G.y = 0;
for(unsigned i = 0; i < length; ++i)
{
G.x += points[i].x;
G.y += points[i].y;
}
G.x /= length;
G.y /= length;
return G;
}
int computePoligonArea (cartezian const * points, unsigned length)
{
unsigned area = 0, i;
cartezian G = getCoordG(points, length);
for(i = 0; i < length - 1; ++i)
{
area += getTriArea(G, points[i], points[i + 1]);
}
area += getTriArea(G, points[0], points[i]);
return area;
}
int main()
{
unsigned length;
fin >> length;
cartezian *points = new cartezian[length];
for(unsigned i = 0; i < length; ++i)
{
fin >> points[i].x >> points[i].y;
}
fout << computePoligonArea(points, length);
delete[] points;
return 0;
}