c++定义一个函数,用该函数判断对于给定范围[1,104]的三个正整数作为边长,能否构成三角形,如果能,进一步判断所构成的三角形是普通三角形,等腰三角形还是等边三角形
时间: 2024-12-15 18:18:37 浏览: 27
在C++中,你可以定义一个函数来判断给定的三个正整数是否能组成三角形,以及它们是何种类型的三角形。首先,我们需要了解三角形的性质:任意两边之和大于第三边。根据这个规则,我们可以编写以下函数:
#include <iostream>
enum TriangleType { NO_TRIANGLE, RIGHT_ANGLE, ISOSCELES, EQUILATERAL };
TriangleType classify_triangle(int a, int b, int c) {
if (a <= 0 || b <= 0 || c <= 0) {
return NO_TRIANGLE; // 如果有一个或多个边长为0或负数,不是有效的三角形
}
// 检查是否满足构成三角形的基本条件
if (a + b <= c || a + c <= b || b + c <= a) {
return NO_TRIANGLE;
}
// 检查三角形类型
if (a == b && b == c) {
return EQUILATERAL; // 所有边长相等,是等边三角形
} else if (a == b || a == c || b == c) {
return ISOSCELES; // 至少有两个边相等,是等腰三角形
} else {
return RIGHT_ANGLE; // 没有相等边,可能有直角(但不能直接确定)
}
}
int main() {
int side1, side2, side3;
std::cout << "Enter three positive integers for triangle sides: ";
std::cin >> side1 >> side2 >> side3;
TriangleType type = classify_triangle(side1, side2, side3);
if (type == NO_TRIANGLE) {
std::cout << "These numbers do not form a valid triangle.\n";
} else {
switch (type) {
case EQUILATERAL:
std::cout << "The triangle is an equilateral triangle.\n";
break;
case ISOSCELES:
std::cout << "The triangle is an isosceles triangle.\n";
break;
case RIGHT_ANGLE:
std::cout << "The triangle could be right-angled, but without further information...\n";
break;
}
}
return 0;
}
在这个例子中,classify_triangle
函数接受三个边长作为参数,检查它们是否能形成三角形并返回相应的三角形类型。在main
函数中,用户会被提示输入三个正整数,然后程序会调用classify_triangle
来做出判断。如果输入的边长不能形成三角形,函数会输出相关信息。若能形成,则会根据三角形类型打印不同消息。