c语言 请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积
我是做建筑工程的,我知道.面积A=Ki*a2(a的平方)
其中a---边长,Ki---系数,i指多边形的边数,
三边形 K3=0.433
四边形 K4=1.00
五边形 K5=1.72
六边形 K6=2.598
七边形 K7=3.614
八边形 K8=4.828
九边形 K9=6.182
十边形 K10=7.694
根据上述的公式,你就可以算出来了.
#include
#include
#include "math.h"
using namespace std;
typedef vector::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);
vectorvecFir;
while (cin>>xpos>>ypos)
{
vecFir.push_back(xpos);
vecFir.push_back(ypos);
};
vector::iterator iterFir=vecFir.begin();
vector::iterator iterSec=iterFir+2;
vector::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;
};
#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;
}
#include<stdio.h>
#include<math.h>
int main()
{
int n=5;
double a[105],b[105];
double square = 0.0;
for(int i = 1;i <= n;i ++)
{
double x,y;
scanf("%lf %lf",&x,&y);
a[i] = x;
b[i] = y;
if(i >= 3 && i <= n)
{
double a1,a2,a3,q;
a1 = sqrt((a[i] - a[i - 1]) * (a[i] - a[i - 1]) + (b[i] - b[i - 1]) * (b[i] - b[i - 1]));
a2 = sqrt((a[i-1] - a[i - 2]) * (a[i-1] - a[i - 2]) + (b[i-1] - b[i - 2]) * (b[i-1] - b[i - 2]));
a3 = sqrt((a[i] - a[i-2]) * (a[i] - a[i-2]) + (b[i] - b[i-2]) * (b[i] - b[i-2]));
q = (a1 + a2 + a3) / 2;
square += sqrt(q * (q - a1) * (q - a2) * (q - a3));
}
}
printf("%lf\n",square);
return 0;
}
这是代码,但是,你输入的是,必须是按照顺序输入的,
逆时针或者顺时针。
桐彦捷立: // 求面积.cpp : 定义控制台应用程序的入口点.#include "stdafx.h" #include #include /****************************************** 三角形面积函数,形式参数为float num1[5], float num2[5],返回值为面积之和 *******************************************/ ...
杜集区13334198467: 请用C语言编写一个图形显示程序.能够在屏幕中央画正四边形或正五边形. - ?
桐彦捷立: 这是五边形的~~四边形的调用一函数就行了#include <graphics.h> main() { int drive,mode,i,j,m,n; drive=DETECT; initgraph(&drive,&mode,""); i=getmaxx(); j=getmaxy(); m=i/2; n=j/2; cleardevice(); line(m,n-38.5,m-40,n-9); line(m,n-38.5,m+40,n-9);...
杜集区13334198467: 请用C语言编写一个图形显示程序.能够在屏幕中央画正四边形或正五边形. - ?
桐彦捷立: 这是五边形的~~四边形的调用一函数就行了#include main(){int drive,mode,i,j,m,n;drive=DETECT;initgraph(&drive,&mode,...
杜集区13334198467: 用C语言编写一个程序,实现用户输入的三角形的三条边长判定是何种三角形??
桐彦捷立: #include<iostream.h> void main() {float a, b, c;for(cin>>a>>b>>c;a>0&&B>0&&c>0;){if(a+b<c||b+c<a) cout<<"不能构成三角形\n";else if(a==b&&b==c) cout<<"等边三角形\n";else if((a*a==b*b+c*c)||(b*b==a*a+c*c0||(c*c==a*a+b*b)) { if(...
杜集区13334198467: C语言编程题输入一个五行五列的矩阵 - ?
桐彦捷立: #include <stdio.h> int main() { int a[5][5],i,j; /*矩阵输入*/ printf("请输入矩阵,一行一行输入:"); for(i=0; i<5; i++) for(j=0; j<5; j++) scanf("%d",&a[i][j]); /*求主对角线上的和及最大元素*/ int sum=0, max=a[0][0]; for(i=0;i<5;i++) { sum +=a[i][i]...
杜集区13334198467: c语言中要求用户自己输入的语句怎么写 - ?
桐彦捷立: 一般可以用scanf(),因为可以用来输入各种格式的数据. 比如有int类型的变量a,char类型的b,可以用 scanf("%d",a); scanf("%c",b);
杜集区13334198467: C语言:编写一程序,根据用户输入的不同长度,输出其菱形. - ?
桐彦捷立: 以前写的,希望能对你有帮助.#include int main(void) { int max,i,j,k; printf("input an odd:"); scanf("%d",&max); for(i=1;i { for(j=max/2;j>i-1;j--) printf(" "); for(k=1;k printf("*"); printf("\n"); } for(i=max/2;i>=1;i--) { for(k=1;k printf(" "); for(j=1;j printf("*"); printf("\n"); } return 0; }
杜集区13334198467: C语言编程题目?
桐彦捷立:你好,程序如下: #include<stdio.h> #define PI 3.14 void main() { double r,area,c; printf("请输入半径:"); scanf("%lf",&r); area=PI*r*r; c=2*r*PI; printf("圆的周长是: %lf\n",c); printf("圆的面积是: %lf\n",area); } 有疑问提出 望采纳
杜集区13334198467: 输入N个点的坐标 判断这N个点能否构成凸多边形 C语言编写 急.... - ?
桐彦捷立: #include<iostream.h>//#define N const int N=4; int tt(double p[][2],int a,int b) //a为下标,不能为float { int temp[N],k=0; double t; for(int i=0;i<N;i++) { if(i==a||i==b) { continue; } t=p[i][0]*(p[b][1]-p[a][1])+(p[a][0]-p[b][0])*p[i][1]-p[a][0]*p[b][1]+p[b][0]*p[a][1]; ...
杜集区13334198467: C编写一个程序, 提示用户用英寸输入一个距离,然后将该距离值输出为码,英尺,英寸形式. - ?
桐彦捷立: 您好!很高兴为您解答.程序如下:#include void main(){ double inch; int foot,yard; printf("请输入...