Pagini recente » Cod sursa (job #1575819) | Cod sursa (job #232037) | Cod sursa (job #1590115) | Cod sursa (job #2658636) | Cod sursa (job #2419648)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
struct node{
int x,y;
struct node *urm;
};
typedef struct node* LSI;
LSI lista;
int n;
long double aria;
void inserare(LSI& L,int x,LSI p);
void creare(LSI& C);
long double heron(int x,int y,int x1,int y1,int x2,int y2);
int main(){
int i;
creare(lista);
int x=lista->x;
int y=lista->y;
LSI it=lista;
it=it->urm;
while(it->urm != lista){
aria+=heron(x,y,it->x,it->y,it->urm->x,it->urm->y);
it=it->urm;
}
fout<<fixed<<setprecision(8)<<aria<<'\n';
return 0;
}
void inserare(LSI& L,int x,int y,LSI p){
LSI q=new node;
q->x=x;
q->y=y;
if(p != NULL){
q->urm=L;
p->urm=q;
}
else{
q->urm=L;
L=q;
L->urm=L;
}
}
void creare(LSI& lista){
int x,y,i;
LSI ultim;
lista=ultim=NULL;
fin>>n;
for(i=1;i<=n;i++){
fin>>x>>y;
inserare(lista,x,y,ultim);
if(i == 1)
ultim=lista;
else
ultim=ultim->urm;
}
}
long double heron(int x,int y,int x1,int y1,int x2,int y2){
long double l1,l2,l3;
l1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
l2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
l3=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
long double p=(l1+l2+l3)/2;
return sqrt(p*(p-l1)*(p-l2)*(p-l3));
}