[C语言] 关于计算多边形面积的一点问题

2023-02-22,,

【一道练习题】

面基

时间限制:1000ms   内存限制:65536kb

通过率:107/134 (79.85%)    正确率:107/319 (33.54%)

题目描述

按顺时针或逆时针顺序输入一个简单多边形的每个顶点坐标,求这个多边形的面积

在几何形状中,简单多边形是由直线,非相交的线段或“边”组成的扁平形状,其成对连接以形成封闭路径。(百度百科)

输入

第一行一个整数nn,表示顶点数

接下来n行,每行22个整数x,yx,y表示一个顶点坐标

输出

对于每组数据,输出一行,一个浮点数表示面积(保留7位小数)

输入样例

3
0 0
100 100
100 0

输出样例

5000.0000000

数据范围

3≤n≤1000003≤n≤100000

0≤x,y≤200

#我的一点思路,不知道对不对:使用向量叉乘计算面积;

for example:SABC=0.5*|a×b|;

以下是代码:

#include <stdio.h>
#include <stdlib.h>
int main( ){
int i,j,n;
double s=;
double a[][];
scanf("%d",&n);
for(i=;i<n;i++)
for(j=;j<;j++)
scanf("%lf",&a[i][j]);
for(i=;i<n;i++)
for(j=;j<;j++)
a[i][j]=a[i][j]-a[][j];
for(i=;i<n-;i++){
s = s + 0.5* ( a[i][] *a[i+][] - a[i+] [] * a[i][] );
}
s=s>0?s:-s;
printf("%.7lf",s);
return ;
}

我的一点疑问:

1.为什么最后s会出现负值呢?增加了一个判断条件判断s是否大于零可以让这道题AC,但我不明白这个正负号反映出来的几何问题。

2.*注意考虑凹多边形。

如果能有人解答,再感谢不过!!

[C语言] 关于计算多边形面积的一点问题的相关教程结束。

《[C语言] 关于计算多边形面积的一点问题.doc》

下载本文的Word格式文档,以方便收藏与打印。