[C語言] 關於計算多邊形面積的一點問題

【一道練習題】

面基

時間限制:1000ms   內存限制:65536kbmarkdown

經過率:107/134 (79.85%)    正確率:107/319 (33.54%)spa

題目描述

按順時針或逆時針順序輸入一個簡單多邊形的每一個頂點座標,求這個多邊形的面積。3d

在幾何形狀中,簡單多邊形是由直線,非相交的線段或「邊」組成的扁平形狀,其成對鏈接以造成封閉路徑。(百度百科)code

輸入

第一行一個整數nn,表示頂點數xml

接下來n行,每行22個整數x,yx,y表示一個頂點座標blog

輸出

對於每組數據,輸出一行,一個浮點數表示面積(保留7位小數)內存

輸入樣例

3
0 0
100 100
100 0

輸出樣例

5000.0000000

數據範圍

3n1000003≤n≤100000it

0x,y200io

 

#個人一點思路,不知道對不對:使用向量叉乘計算面積;class

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,可是這個正負號反映出來的幾何問題我真的不是很明白……

若是能有人解答,再感謝不過!!

相關文章
相關標籤/搜索