本题要求实现2个函数,分别判断3条边能否构成一个三角形和计算三角形的面积,使得可以完成五边形面积的计算。题目保证计算结果不超过双精度范围。
将一个五边形分割成3个三角形(如上图所示),输入这些三角形的7条边长,计算该五边形的面积。要求定义和调用函数is_triangle(a, b, c)
判断a、b、c能否构成一个合法的三角形, 在一个三角形中, 任意两边之和应大于第三边。定义和调用函数area(a,b,c)
计算边长为a、b、c的三角形面积,三角形面积计算公式:area=s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
函数接口定义:
int is_triangle(double a, double b, double c);
double area(double a, double b, double c);
函数is_triangle
的功能是:若a、b、c能构成一个合法的三角形,则返回1;否则返回0。
函数area(a,b,c)
的功能是:计算并返回边长为a、b、c的三角形面积。
裁判测试程序样例:
# include <stdio.h>
# include <math.h>
int is_triangle(double a, double b, double c);/* 判断a,b,c三条边能否构成一个三角形 */
double area(double a, double b, double c); /* 计算三角形面积 */
int main (void)
{
double a1, a2, a3, a4, a5, a6, a7, result;
scanf("%lf%lf%lf%lf%lf%lf%lf", &a1, &a2, &a3, &a4, &a5, &a6, &a7);
if( is_triangle(a1, a5, a6) != 0 && is_triangle(a4, a6, a7) != 0 && is_triangle(a2, a3, a7) != 0){
result = area(a1, a5, a6) + area(a4, a6, a7) + area(a2, a3, a7);
printf("The area of the Pentagon is %.2f\n", result) ;
}else{
printf("These sides do not correspond to a valid pentagon\n");
}
return 0;
}
/* 请在这里填写答案 */
输入样例1:
3.1 4.2 5 3.03 4.01 5.89 6.36
结尾无空行
输出样例1:
25.16
结尾无空行
输入样例2:
3 2 5 3 4 5 3
结尾无空行
输出样例2:
These sides do not correspond to a valid pentagon.
结尾无空行
int is_triangle(double a, double b, double c){
if(a+b>c&&a+c>b&&b+c>a){
return 1;
}
else{
return 0;
}
}
double area(double a, double b, double c){
double s,area;
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
return area;
}