Cod sursa(job #1887595)

Utilizator VladG26Ene Vlad-Mihai VladG26 Data 21 februarie 2017 17:59:15
Problema Aria Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <cstdio>
using namespace std;
struct punct
{
    double x,y;
}vPoligon[100005];
int n;
void citire()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%lf%lf",&vPoligon[i].x,&vPoligon[i].y);
    }
}
double calculDet(punct p1, punct p2)
{
    return (p1.x*p2.y-p2.x*p1.y);
}
void calculAriePrinPunct()
{
    double aria=0;
    for(int i=1;i<n;i++)
    {
        aria+=calculDet(vPoligon[i],vPoligon[i+1]);
    }
    aria+=calculDet(vPoligon[n],vPoligon[1]);
    aria/=2;
    printf("%.5lf",aria);
}
double abs(double x)
{
    if(x<0)
        return -x;
    return x;
}
double arieTrapez(punct p1,punct p2)
{
    int H=p1.x-p2.x;
    return ((p1.y+p2.y)*H);
}
void calculArieCuTrapez()
{
    double aria=0;
    for(int i=1;i<n;i++)
    {
        aria+=arieTrapez(vPoligon[i],vPoligon[i+1]);
    }
    aria+=arieTrapez(vPoligon[n],vPoligon[1]);
    aria/=2;
    printf("%.5lf",abs(aria));

}
int main()
{
    freopen("aria.in","r",stdin);
    freopen("aria.out","w",stdout);
    citire();
    //calculAriePrinPunct();
    calculArieCuTrapez();
    return 0;
}