| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1703 人关注过本帖
标题:给出各顶点求多边形面积
只看楼主 加入收藏
a1067942077
Rank: 2
等 级:论坛游民
帖 子:36
专家分:11
注 册:2016-10-15
结帖率:38.46%
收藏
 问题点数:0 回复次数:4 
给出各顶点求多边形面积
输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。
输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。

对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。
每个实例的输出占一行。

Sample Input
3 0 0 1 0 0 1
4 1 0 0 1 -1 0 0 -1
0
Sample Output
0.5
2.0

我用的方法是把多边形分成多个三角形求面积再求和
三角形面积用公式S^2=p(p-a)(p-b)(p-c)其中(p=a+b+c/2)  a,b,c为三边
OJ上显示答案错误

#include<stdio.h>
#include<math.h>
double area(int a1,int a2,int b1,int b2,int c1,int c2);
double length(int a,int b,int c,int d);
int main()
{
    int n,i,j;
    double sum;
    int point[100][2];
    while(scanf("%d",&n)!=EOF)
    {
    sum=0;
    if(n==0)
    break;
    else{
    for(i=0;i<n;i++)
        scanf(" %d %d",&point[i][0],&point[i][1]);
    for(j=1;j<n-1;j++)
        sum+=area(point[0][0],point[0][1],point[j][0],point[j][1],point[j+1][0],point[j+1][1]);
    printf("%.1lf\n",sum);
    }
    }
}

double area(int a1,int a2,int b1,int b2,int c1,int c2)
{
    double p;
    p=(length(a1,a2,b1,b2)+length(b1,b2,c1,c2)+length(c1,c2,a1,a2))/2;
    return sqrt(p*(p-length(a1,a2,b1,b2))*(p-length(b1,b2,c1,c2))*(p-length(c1,c2,a1,a2)));
}

double length(int a,int b,int c,int d)
{
    return sqrt(((a-c)*(a-c)+(b-d)*(b-d))*1.0);
}
搜索更多相关主题的帖子: 小数点 
2016-11-29 19:31
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 楼主 a1067942077
for(j=1;j<n-1;j++)
         sum+=area(point[0][0],point[0][1],point[j][0],point[j][1],point[j+1][0],point[j+1][1]);
这里有问题。
2016-11-29 20:31
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 楼主 a1067942077
说错了。
2016-11-29 20:33
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 楼主 a1067942077
printf("%.1lf\n",sum);
这里加个点是做什么?
2016-11-29 20:37
a1067942077
Rank: 2
等 级:论坛游民
帖 子:36
专家分:11
注 册:2016-10-15
收藏
得分:0 
回复 4楼 yangfrancis
控制输出位数。。要求保留1位小数
2016-11-29 20:42
快速回复:给出各顶点求多边形面积
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022935 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved