永发信息网

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

答案:2  悬赏:40  手机版
解决时间 2021-02-15 06:50
  • 提问者网友:心牵心
  • 2021-02-15 02:29
请编写程序让用户输入凸五边形的五个顶点坐标,计算出该凸五边形的面积

提示:目前在计算凸五边形的面积的时候通常是将凸五边形变成为求三个三角形面积之和的问题
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-02-15 02:51
// 求面积.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include
#include

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;
}
全部回答
  • 1楼网友:廢物販賣機
  • 2021-02-15 03:01

1.首先,x坐标,x=(x1+x2)/2;

2.其次,y坐标,y=y1+(x2-x)*1.732

这里1.732为根号3的大概值.x为上面算出来的,

y1为其它两点任意一个y轴坐标.x2是靠右边的点x轴坐标

(x2-x)=(x-x1)是为了算出一条边的长度的一半.

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯