找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 160|回复: 0

[每日一码] 求任意多边形的面积

[复制链接]

1

主题

0

回帖

33

积分

管理员

积分
33
发表于 2024-3-14 20:42:37 | 显示全部楼层 |阅读模式
  1. //求任意多边形的面积
  2. /*语法:result = polygonarea(vector<Point>&polygon, int N);
  3. 参数:
  4. polygon:多变形顶点数组
  5. N:多边形顶点数目
  6. 返回值:多边形面积
  7. 注意:
  8. 支持任意多边形,凹、凸皆可
  9. 多边形顶点输入时按顺时针顺序排列
  10. */
  11. #include <iostream>
  12. #include <vector>
  13. using namespace std;
  14. typedef struct  Point{
  15.     double x, y;
  16.     Point(){}
  17. } Point;
  18. double polygonarea(vector<Point>&polygon, int N)
  19. {
  20.     int i, j;
  21.     double area = 0;
  22.     for (i = 0; i<N; i++) {
  23.         j = (i + 1) % N;
  24.         area += polygon[i].x * polygon[j].y;
  25.         area -= polygon[i].y * polygon[j].x;
  26.     }
  27.     area /= 2;
  28.     return(area < 0 ? -area : area);
  29. }
  30. //测试函数
  31. int main(){
  32.     vector<Point> polygon;
  33.     int n;
  34.     cin >> n;
  35.     polygon.resize(n);
  36.     int i = 0;
  37.     while (n--){
  38.         double x, y;
  39.         cin >> x >> y;
  40.         polygon[i].x = x;
  41.         polygon[i].y = y;
  42.         ++i;
  43.     }
  44.     cout << "此多边形的面积为" << polygonarea(polygon, polygon.size()) << endl;
  45.     return 0;
  46. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 21:33 , Processed in 0.099725 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表