1. 程式人生 > >C++實現——任意多邊形的面積

C++實現——任意多邊形的面積

這裡寫圖片描述

//求任意多邊形的面積
/*語法:result = polygonarea(vector<Point>&polygon, int N);
引數:
polygon:多變形頂點陣列
N:多邊形頂點數目
返回值:多邊形面積
注意:
支援任意多邊形,凹、凸皆可
多邊形頂點輸入時按順時針順序排列

*/
#include <iostream>
#include <vector>
using namespace std;
typedef struct  Point{
    double x, y;
    Point(){}
} Point;
double polygonarea(vector
<Point>
&polygon, int N) { int i, j; double area = 0; for (i = 0; i<N; i++) { j = (i + 1) % N; area += polygon[i].x * polygon[j].y; area -= polygon[i].y * polygon[j].x; } area /= 2; return(area < 0 ? -area : area); } //測試函式 int main(){ vector
<Point>
polygon; int n; cin >> n; polygon.resize(n); int i = 0; while (n--){ double x, y; cin >> x >> y; polygon[i].x = x; polygon[i].y = y; ++i; } cout << "此多邊形的面積為" << polygonarea(polygon, polygon.size()) << endl; return
0; }