小X的多边形

思路:

本题是求多边形的面积
核心代码如下:

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;

}
全部评论

相关推荐

07-10 11:08
门头沟学院 Java
Sairus:我注册都注册不了提醒我手机号二次啥的,果然对于人才推得就是快,像我投完了就没回音的
投递京东等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:32
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务