-->
当前位置:首页 > 题库 > 正文内容

程序填空题:凸六边形的面积 - C/C++ 结构

Luz2年前 (2022-09-06)题库443
平面内的六边形可以用六个点坐标表示:
1. 请设计Point结构表示一个坐标点。
2. 请设计Hexagon结构表示一个六边形,其内包括6个Point成员。
3. 如图1所示,当六边形为凸六边形时,可以将其拆分成四个三角形,利用海伦-秦九韶公式分别计算三角形的面积并相加,即得凸六边形的面积。请实现凸六边形面积计算函数computeHexagonArea()并编写合适的代码加以验证。

![image.png](~/ac89229f-1eb3-403c-ba7c-52090d2ebfbe.png)
图1

请将下述代码补充完整,完成上述目标。

c
#include <stdio.h>
#include <math.h>

typedef struct {
double x;
double y;
} Point;

typedef struct {

} Hexagon;

static inline double computeDistance(const Point* p1, const Point* p2){
double d =
return d;
}

double computeTriangleArea(const Point* p1, const Point* p2, const Point* p3)
{
double a = computeDistance(p1,p2);
double b = computeDistance(p2,p3);
double c =

double p = (a+b+c)/2.0;
double s = sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}

double computeHexagonArea(const Hexagon* h){
return
computeTriangleArea(&h->pts[0],&h->pts[1],&h->pts[2]) +
+
computeTriangleArea(&h->pts[0],&h->pts[3],&h->pts[4]) +

}

int main()
{
Hexagon h = {{{0,0},{33.2,30},{61.2,0},{61,-31.1},{20,-57.1},{0,-33.2}}};
printf("Area of this hexagon: %.3f",computeHexagonArea());
return 0;
}


程序期望的执行结果为:

Area of this hexagon: 3632.210


### 感觉不会?  那试着听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)
![image.png](~/6e79c9e3-cb7f-486d-ab78-36b5a8f655c0.png)









答案:
第1空:Point pts[6];

第2空:sqrt((p1->x-p2->x)*(p1->x-p2->x)+(p1->y-p2->y)*(p1->y-p2->y));

第3空:computeDistance(p1,p3);

第4空:computeTriangleArea(&h->pts[0],&h->pts[2],&h->pts[3])

第5空:computeTriangleArea(&h->pts[0],&h->pts[4],&h->pts[5]);

第6空:&h

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。