编写一个代表三角形的类。其中,三条边为三角型的属性,并封装有求三角形的面积和周长的方法。并设计构造方法和toString() 方法。分别针对三条边为3,4,5和8,8,12的两个三角形进行测试,要求面积保留小数点后两位。
时间: 2024-10-11 09:09:15 浏览: 17
为了创建一个代表三角形的类,你可以按照以下步骤进行:
1. **定义三角形类**:
```cpp
#include <iostream>
#include <cmath>
class Triangle {
public:
// 构造函数,接受三边长度作为参数
Triangle(double a, double b, double c) : side_a(a), side_b(b), side_c(c) {
if (a + b > c && a + c > b && b + c > a) {
// 检查输入是否满足构成三角形的条件
perimeter = a + b + c;
} else {
std::cerr << "Invalid sides provided for a triangle." << std::endl;
exit(1);
}
}
// 计算面积的方法,使用海伦公式
double area() const {
double semi_perimeter = perimeter / 2;
return std::sqrt(semi_perimeter * (semi_perimeter - side_a) * (semi_perimeter - side_b) * (semi_perimeter - side_c));
}
// 返回三角形信息的方法,用于打印
std::string toString() const {
return "Triangle with sides: (" + std::to_string(side_a) + ", " + std::to_string(side_b) + ", " + std::to_string(side_c) + ") Perimeter: " + std::to_string(perimeter) + ", Area: " + std::fixed + std::setprecision(2) + std::to_string(area());
}
private:
double side_a, side_b, side_c; // 三角形的三条边
double perimeter; // 周长
};
```
2. **测试示例**:
```cpp
int main() {
// 测试三角形A(3, 4, 5)
Triangle triangle1(3, 4, 5);
std::cout << triangle1.toString() << std::endl;
// 测试三角形B(8, 8, 12),注意这可能不是一个标准的三角形,因为两条边相等
Triangle triangle2(8, 8, 12);
std::cout << triangle2.toString() << std::endl;
return 0;
}
```
在这个例子中,我们定义了一个`Triangle`类,它具有三个边`side_a`, `side_b`, 和 `side_c`,以及它们的周长`perimeter`。`area()`方法计算面积,而`toString()`方法返回三角形的信息。构造函数会检查输入的边能否构成有效的三角形。
在`main()`函数中,我们创建了两个三角形实例,分别是3-4-5和8-8-12,然后调用`toString()`方法打印它们的信息。对于8-8-12的三角形,由于存在两条边相等的情况,它可能是等腰三角形,但不是标准的直角三角形。
阅读全文