当前位置:首页 » 编程语言 » 计算五边形面积程序c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

计算五边形面积程序c语言

发布时间: 2022-08-28 17:33:21

⑴ 编程根据五边形五个顶点的坐标计算五边形面积

#include<iostream>
#include <vector>
#include "math.h"
using namespace std;
typedef vector<double>::iterator iter;
double length(iter &iterFir,iter &iterSec)
{
return sqrt(pow(*iterSec-*iterFir,2)+pow(*(iterSec+1)-*(iterFir+1),2));
};
double compute(iter &iterFir,iter &iterSec,iter &iterThi)
{
double a,b,c,d;
a=length(iterFir,iterSec);
b=length(iterSec,iterThi);
c=length(iterThi,iterFir);
if(a+b>c&&a+c>b&&b+c>a)
{
d=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
d=sqrt(1-pow(d,2));
return (0.5*a*c*d);
}
else
{
cerr<<"the data is wrong!";
return 0;
};
};
int main()
{
cout<<"请按照顺时间次序输入X,Y: "<<endl;
double xpos,ypos,S(0),ret(0);
vector<double>vecFir;
while (cin>>xpos>>ypos)
{
vecFir.push_back(xpos);
vecFir.push_back(ypos);
};
vector<double>::iterator iterFir=vecFir.begin();
vector<double>::iterator iterSec=iterFir+2;
vector<double>::iterator iterThi=iterFir+4;
while(iterThi!=vecFir.end())
{
ret=compute(iterFir,iterSec,iterThi);
if(ret)
S+=ret;
else
break;
iterSec+=2;
iterThi+=2;
};
cout<<S<<endl<<"加分,不然我很生气,后果很严重"<<endl;
return 0;
};
此程序只能是凸图象才正确,否则计算出来的是错误的.我也想编一个可以自动判别是否是凸图形的程序,不过越想越复杂.不过我们的图形大部分是凸的图形,即使是凹图形,只要认为的分为几个凸图形就可以计算了,这么程序可以计算N边型,只要是凸的就可以了._______坚决要求奖励

⑵ 编写程序根据五边形五个顶点的坐标计算五边形的面积

#include<iostream>
#include <vector>
#include "math.h"
using namespace std;
typedef vector<double>::iterator iter;
double length(iter &iterFir,iter &iterSec)
{
return sqrt(pow(*iterSec-*iterFir,2)+pow(*(iterSec+1)-*(iterFir+1),2));
};
double compute(iter &iterFir,iter &iterSec,iter &iterThi)
{
double a,b,c,d;
a=length(iterFir,iterSec);
b=length(iterSec,iterThi);
c=length(iterThi,iterFir);
if(a+b>c&&a+c>b&&b+c>a)
{
d=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
d=sqrt(1-pow(d,2));
return (0.5*a*c*d);
}
else
{
cerr<<"the data is wrong!";
return 0;
};
};
int main()
{
cout<<"请按照顺时间次序输入X,Y: "<<endl;
double xpos,ypos,S(0),ret(0);
vector<double>vecFir;
while (cin>>xpos>>ypos)
{
vecFir.push_back(xpos);
vecFir.push_back(ypos);
};
vector<double>::iterator iterFir=vecFir.begin();
vector<double>::iterator iterSec=iterFir+2;
vector<double>::iterator iterThi=iterFir+4;
while(iterThi!=vecFir.end())
{
ret=compute(iterFir,iterSec,iterThi);
if(ret)
S+=ret;
else
break;
iterSec+=2;
iterThi+=2;
};
cout<<S<<endl<<"加分,不然我很生气,后果很严重"<<endl;
return 0;
};

c语言 请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积

// 求面积.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <stdio.h>
#include <math.h>
/******************************************
三角形面积函数,形式参数为float num1[5],
float num2[5],返回值为面积之和
*******************************************/
double square(float num1[5],float num2[5])
{
double side[7],length[3],squ[3];
int i;
for(i=0;i<4;i++) /*两点之间的线段长*/
side[i]=sqrt((num1[i+1]-num1[i])*(num1[i+1]-num1[i])+(num2[i+1]-num2[i])*(num2[i+1]-num2[i]));
side[5]=sqrt((num1[2]-num1[0])*(num1[2]-num1[0])+(num2[2]-num2[0])*(num2[2]-num2[0]));
side[6]=sqrt((num1[4]-num1[2])*(num1[4]-num1[2])+(num2[4]-num2[2])*(num2[4]-num2[2]));
side[4]=sqrt((num1[4]-num1[0])*(num1[4]-num1[0])+(num2[4]-num2[0])*(num2[4]-num2[0]));
length[0]=(side[0]+side[1]+side[5])*1.0/2;
squ[0]=sqrt(length[0]*(length[0]-side[0])*(length[0]-side[1])*(length[0]-side[5])); /*求三角形的面积*/
length[1]=(side[2]+side[3]+side[6])*1.0/2;
squ[1]=sqrt(length[1]*(length[1]-side[2])*(length[1]-side[3])*(length[1]-side[6]));
length[2]=(side[4]+side[5]+side[6])*1.0/2;
squ[2]=sqrt(length[2]*(length[2]-side[4])*(length[2]-side[5])*(length[2]-side[6]));
return (squ[0]+squ[1]+squ[2]); /*返回三角形的面积之和*/
}
int _tmain(int argc, _TCHAR* argv[])
{
float num1[5]={0},num2[5]={0};
double square1=0,squ[3]={0};
int i;
printf("please input the points in turn\n");
for(i=0;i<5;i++)
{
scanf("%f%f",&num1[i],&num2[i]);
printf("%f%f\n",num1[i],num2[i]);
}
square1=square(num1,num2); /*五边形面积等于三个三角形面积之和*/
printf("%f",square1);

return 0;
}

⑷ C语言编写函数, 已知五边形的各条边的长度,计算多边形面积,可将多边形分解成若干个三角形

这个题目的答案可能不唯一,所以呵呵,只知道边长是不行的,面积大小还跟边长顺序,是凹、凸五边形有关
画一对给你看看:

------------
|***********|
|***********|
|***********|
|****。****|
|**。**。**|
|***********|

------------
|***********|
|***********|
|***********|
|***********|
|***********|
|***********|
****。**。
******。

⑸ 已知一个五边,要求从键盘上输入各边,求这个五边形的面积,有python语言编写程

⑹ C语言编程求多边形面积, (1)输入任意三点以上坐标,计算此多边形面

输入边数 n, 输入 多边形各顶点 x,y 坐标,逆时针顺序 (保证 叉乘积 为 正)。
各顶点 x,y 坐标 减去 a[0][0]。以 a[0][0] 为主 计算各三角形面积并累加。

#include <stdio.h>
#include <stdlib.h>

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=0;i<n;i++)
for(j=0;j<2;j++)
a[i][j]=a[i][j]-a[0][0];
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]);
}
printf("%.2lf",s);
return 0;
}
追问
测试数据1 输出错误

错误输出:
1.00
期望输出:
5.00

测试数据2 输出错误

错误输出:
-10000.00
期望输出:
15000.00

测试数据3 输出错误

错误输出:
-1067.50
期望输出:
984.50

测试数据4 输出错误

测试数据5 输出错误

错误输出:
-1000.00
期望输出:
1100.00

都错了啊
追答
// 改正:a[i][j]=a[i][j]-a[0][j];
// 不是 -a[0][0], 是 a[0][j]

#include <stdio.h>
#include <stdlib.h>
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] );
}
printf("%.2lf",s);
return 0;
}

⑺ 五边形面积计算公式是什么

以正五边形为例,面积计算公式是:

其中,t是正五边形的边长。

(7)计算五边形面积程序c语言扩展阅读:

1、定义与性质

圆内接正五边形指内接于圆的正五边形。圆内接正五边形的每一条边相等(即圆的每一条弦相等),每个角均为108°,每个角在圆内所对的优弧相等。

2、内角和求法

因为五边形的内角和可看为3个三角形的内角和,所以,3×180°=540°

3、内角求法

据上一条“正五边形的内角和求法”可知道,正五边形的内角和为540°。

往下拓展:因为正五边形的五个角均相等,且五边形的内角和为540°;所以正五边形的每个内角均为540°÷5=108°