定义并实现三角形类,其成员变量包括 3 个边长变量,成员函数包括构g造函数、以及是否构成直角三角形函数,如果是直角三角形计算三角形面积。 若两短边平方和等于最长边的平方,即为直角三角形 若两短边平方和大于最长边的平方,即为锐角三角形 若两短边平方和小于最长边的平方,即为钝角三角形 在主函数中由用户输入 3 个边的值,先判断三角形是否合法,若合法则用构造函数生成一个对象。 输出对象三角形的类型的判断,如果是三角形计算器面积。
时间: 2024-03-11 11:51:44 浏览: 114
好的,我已经明白了您的要求。以下是符合您要求的三角形类的实现代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Triangle {
private:
double a, b, c;
public:
Triangle(double a, double b, double c) {
if (!isValid(a, b, c)) {
cout << "Invalid triangle!" << endl;
exit(1);
}
this->a = a;
this->b = b;
this->c = c;
}
bool isRightTriangle() {
double maxSide = max(a, max(b, c));
double sumSquares = 0;
if (maxSide == a) {
sumSquares = b * b + c * c;
} else if (maxSide == b) {
sumSquares = a * a + c * c;
} else {
sumSquares = a * a + b * b;
}
return sumSquares == maxSide * maxSide;
}
double getArea() {
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
private:
bool isValid(double a, double b, double c) {
return a + b > c && a + c > b && b + c > a;
}
};
int main() {
double a, b, c;
cout << "Please input the length of three sides of a triangle: ";
cin >> a >> b >> c;
Triangle triangle(a, b, c);
if (triangle.isRightTriangle()) {
cout << "This is a right triangle." << endl;
cout << "The area of the triangle is " << triangle.getArea() << endl;
} else {
cout << "This is not a right triangle." << endl;
}
return 0;
}
```
在这个实现中,我们定义了一个 `Triangle` 类,它有 3 个私有成员变量 `a`、`b`、`c` 分别表示三角形的三条边长。我们在构造函数中对输入的三条边长进行了判断,若无法构成三角形则输出错误信息并退出程序。我们还定义了一个 `isValid` 函数来判断三条边长是否可以构成三角形。
在 `Triangle` 类中,我们还定义了一个 `isRightTriangle` 函数来判断三角形是否为直角三角形。如果是直角三角形,则还定义了一个 `getArea` 函数来计算三角形的面积。
在主函数中,我们先由用户输入三角形的三条边长,并用这些边长构造一个 `Triangle` 对象。如果这个三角形是直角三角形,则输出其类型和面积;否则只输出其类型。
希望这个实现能满足您的需求。
阅读全文