n边形面积

输入n,表示边数,接着逆时针输入坐标,球多边形面积(注意多边形凹凸性!!!)

 

#include<stdio.h>   
int main( )  
{  
    int n;  
    while(scanf("%d",&n) && n)  
    {  
        int i;  
        float a[100][2],s=0;  
        scanf("%f %f",&a[0][0],&a[0][1]);  
        for(i=1;i<n;i++)  
        {  
            scanf("%f %f",&a[i][0],&a[i][1]);          
//选取(0,0)为基准点,用向量差乘法求每个三角形的面积   
            s+=a[i-1][0]*a[i][1]-a[i][0]*a[i-1][1];    
//x[i]*y[i+1]-x[i+1]*y[i]   累加之后变可得三角线面积   
        }                                              
//累加之后时凹三角形多出来的部分被消除了,   
        s+=a[0][1]*a[n-1][0]-a[0][0]*a[n-1][1];       
 //注意第一个点和最后一个点以及原点构成的三角形也要算进来   
        printf("%.1f\n",s/2);                         
 //注意差乘是有顺序的!!!谁在先谁在后都是有学问的   
    }                                              
  //要好好研究一下,不要知道了皮毛就拿去用   
    return 0;  
}  

 

转载于:https://www.cnblogs.com/gj-Acit/archive/2012/12/27/2835537.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值