[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