Pagini recente » Cod sursa (job #3228348) | Cod sursa (job #1218060) | Cod sursa (job #929161) | Cod sursa (job #2903401) | Cod sursa (job #1670894)
#include <fstream>
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
struct cartezian
{
double x,y;
};
double getTriArea(const cartezian &A, const cartezian &B, const cartezian &C)
{
double d1 = A.x*B.y + B.x*C.y + C.x*A.y;
double d2 = C.x*B.y + B.x*A.y + A.x*C.y;
double 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;
}
double computePoligonArea (cartezian const * points, unsigned length)
{
unsigned i;
double area;
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;
}