多边形的面积

每日一练社区 2022-06-17 14:33:35

给出一个简单多边形(没有缺口),它的边要么是垂直的,要么是水平的。要求计算多边形的面积。
多边形被放置在一个 X-Y 的卡笛尔平面上,它所有的边都平行于两条坐标轴之一。然后按逆时针方向给出各顶点的坐标值。所有的坐标值都是整数(因此多边形的面积也为整数)。

输入描述:

第一行给出多边形的顶点数 n(n≤100) 。接下来的几行每行给出多边形一个顶点的坐标值 X 和 Y (都为整数并且用空格隔开)。顶点按逆时针方向逐个给出。并且多边形的每一个顶点的坐标值 -200≤x,y≤200 。多边形最后是靠从最后一个顶点到第一个顶点画一条边来封闭的。

输出描述:

一个整数,表示多边形的面积。

输入样例:

10
0 0
4 0
4 1
3 1
3 3
2 3
2 2
1 2
1 3
0 3

输出样例:

9

返回练习题答题页面

...全文
800 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
YZNSBZ 2023-07-11
  • 打赏
  • 举报
回复
用python语言实现

读取多边形的顶点数
```python
n = int(input())

读取多边形的顶点坐标,并存储在一个列表中

points = []
for i in range(n):
    x, y = map(int, input().split())
    points.append((x, y))

计算多边形的面积,使用叉积公式

area = 0
for i in range(n):
    j = (i + 1) % n # 下一个顶点的索引
    area += points[i][0] * points[j][1] - points[j][0] * points[i][1]
area = abs(area) // 2 # 取绝对值并除以2

输出多边形的面积

print(area)
CSDN-Ada助手 2023-07-11
  • 举报
回复
@YZNSBZ 你可以使用以下Python代码来实现计算多边形的面积: ```python # 读取多边形的顶点数 n = int(input()) # 读取多边形的顶点坐标,并存储在一个列表中 points = [] for i in range(n): x, y = map(int, input().split()) points.append((x, y)) # 计算多边形的面积,使用叉积公式 area = 0 for i in range(n): j = (i + 1) % n # 下一个顶点的索引 area += points[i][0] * points[j][1] - points[j][0] * points[i][1] area = abs(area) // 2 # 取绝对值并除以2 # 输出多边形的面积 print(area) ``` 你可以根据题目给出的输入样例进行测试。希望对你有帮助!
7*24 工作者 2023-07-03
  • 打赏
  • 举报
回复

# 输入多边形的顶点数
n = int(input())

# 输入多边形的顶点坐标
# points = [(0,0),(4,0),(4,1),(3,1),(3,3),(2,3),(2,2),(1,2),(1,3),(0,3)]
points = []
for i in range(n):
    x, y = map(int, input().strip().split())
    points.append((x, y))

# 根据输入的坐标,求多边形的面积的2倍,S=1/2 |(x1y2+x2y3+...+xny1)-(y1x2+y2x3+...+ynx1)|
area = 0
for i in range(n):
    if i+1 == n:
        area += points[i][0] * points[i+1-n][1]
        area -= points[i][1] * points[i+1-n][0]
    else:
        area += points[i][0]*points[i+1][1]
        area -= points[i][1]*points[i+1][0]

# 输出多边形的面积
if area % 2 ==0:
    print( area//2 )
else:
    print(area/2)


CSDN-Ada助手 2023-07-03
  • 举报
回复
@7*24 工作者 你的代码基本正确,但有一个小错误。在计算多边形面积时,你应该将每个顶点的坐标值相乘,而不是将x坐标和y坐标相乘。因此,你需要将代码中的`points[i][0]*points[i+1][1]`和`points[i][1]*points[i+1][0]`修改为`points[i][0]*points[i+1][1] - points[i][1]*points[i+1][0]`。这样才能正确计算多边形的面积。修改后的代码如下: ```python # 根据输入的坐标,求多边形的面积的2倍,S=1/2 |(x1y2+x2y3+...+xny1)-(y1x2+y2x3+...+ynx1)| area = 0 for i in range(n): if i+1 == n: area += points[i][0] * points[i+1-n][1] area -= points[i][1] * points[i+1-n][0] else: area += points[i][0]*points[i+1][1] - points[i][1]*points[i+1][0] # 输出多边形的面积 if area % 2 ==0: print( area//2 ) else: print(area/2) ``` 希望能对你有所帮助!如果还有其他问题,请随时提问。
A_Canan 2023-05-08
  • 打赏
  • 举报
回复

# 用python语言实现

# 读取多边形的顶点数
n = int(input())

# 读取多边形的顶点坐标,并存储在一个列表中
points = []
for i in range(n):
    x, y = map(int, input().split())
    points.append((x, y))

# 计算多边形的面积,使用叉积公式
area = 0
for i in range(n):
    j = (i + 1) % n # 下一个顶点的索引
    area += points[i][0] * points[j][1] - points[j][0] * points[i][1]
area = abs(area) // 2 # 取绝对值并除以2

# 输出多边形的面积
print(area)
CSDN-Ada助手 2023-05-12
  • 举报
回复
@A_Canan 你好,这是一段使用 Python 语言实现计算多边形面积的代码。它通过读取多边形的顶点数和每个顶点的坐标,利用叉积公式计算多边形的面积。代码实现比较简单,如果有需要可以参考一下哦。

11,808

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧