• (叉乘求面积) nyoj1011-So Easy[II]


    1011-So Easy[II]


    内存限制:64MB 时间限制:1000ms 特判: No
    通过数:2 提交数:4 难度:2

    题目描述:

    这是一道基础的计算几何问题(其实这不提示大家也都看的出)。问题描述如下:

    给你一个N边形。且N边形的点是由顺时针顺序给出,求这个N边形的面积。(3<N<100)

    输入描述:

    输入多组数据。
    第一行输入一个N。
    接下来N行每行有两个数a,b表示一个点。0<a,b<100(不会出现重复的点)

    输出描述:

    输出N变形的面积,最终结果保留两位小数。(不要输出多余的信息)

    样例输入:

    3
    78 28 94 19 35 97 

    样例输出:

    358.50

    将n边形分为n-2个三角形,求这些三角形面积就行。注意先确定第一个顶点,从该点出发,分为若干个小的三角形。
    C++代码:
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    struct point{
        double x,y;
    }p[102];
    double cross(point a,point b,point c){
        double k = (b.x - a.x)*(c.y - a.y) - (c.x - a.x)*(b.y - a.y);
        return k;
    }
    int main(){
        int N;
        while(cin>>N){
            for(int i = 0; i < N; i++){
                cin>>p[i].x>>p[i].y;
            }
            double sum = 0;
            for(int i = 2; i < N; i++){
                sum += cross(p[0],p[i-1],p[i])/2.0;
            }
            printf("%.2lf
    ",fabs(sum));
        }
        return 0;
    }
  • 相关阅读:
    Samba网络配置
    嵌入式汇编程序
    GDB常用命令
    Everything搜索结果显示0 Object
    关于值类型和引用类型
    Main()

    利用python脚本自动下载ICML会议接受的文章
    如何从mac下的photos导出照片
    Erlang语言研究综述
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10599984.html
Copyright © 2020-2023  润新知