⑴ 編程根據五邊形五個頂點的坐標計算五邊形面積
#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°