思路:
本题是求多边形的面积
核心代码如下:
double PolygonArea(Point *p,int n) { double area=0; for(int i=1;i<n-1;i++) area+=Cross(p[i]-p[0],p[i+1]-p[0]); return area/2; }
全部代码:
#include <iostream> #include <cstdio> #include <cmath> const int eps=1e-10; using namespace std; struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(y){ } }; typedef Point Vector; Vector operator +(Vector A,Vector B) { return Vector(A.x+B.x,A.y+B.y); } Vector operator -(Vector A,Vector B) { return Vector(A.x-B.x,A.y-B.y); } double Dot(Vector A,Vector B) { return A.x*B.x+A.y*B.y; } double Cross(Vector A,Vector B) { return A.x*B.y-B.x*A.y; } double Length(Vector A) { return sqrt(Dot(A,A)); } int dcmp(double x) { if(fabs(x)<eps) return 0; else return x<0?-1:1; } double PolygonArea(Point *p,int n) { double area=0; for(int i=1;i<n-1;i++) area+=Cross(p[i]-p[0],p[i+1]-p[0]); return area/2; } int main() { int n; cin>>n; Point p[6]; for(int i=0;i<n;i++) cin>>p[i].x>>p[i].y; cout<<round(PolygonArea(p,n)); return 0; }
全部评论
(0) 回帖