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


【一道练习题】

面基

时间限制: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

数据范围

3n1000003≤n≤100000

0x,y200

 

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

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

以下是代码:

 

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

 

我的一点疑问:

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

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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM