码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-11-24 13:43:55      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:lib   使用   习题   return   img   解答   clu   markdown   image   

【一道练习题】

面基

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

 

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

技术图片

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

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

标签:lib   使用   习题   return   img   解答   clu   markdown   image   

原文地址:https://www.cnblogs.com/life-blog-of-Dolly/p/11922008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!