2.编写一个程序,定义一个三角形类Triangle,在类中包含3个私有数据成员用于保存三角形的三条边长。成员函数Area( )用于计算三角形的面积。重载运算符“+”可以求两个三角形对象的面积之和。要求重载为类的友元函数。编。
时间: 2023-06-06 19:06:11 浏览: 371
回答:好的,我可以帮你解答这个问题。
以下是 Triangle 类的实现:
```cpp
class Triangle {
private:
double a, b, c;
public:
Triangle(double a, double b, double c): a(a), b(b), c(c) {};
double Area() {
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
friend double operator+(const Triangle& t1, const Triangle& t2) {
return t1.Area() + t2.Area();
}
};
```
使用示例:
```cpp
Triangle t1(3, 4, 5); // 定义一个边长为 3, 4, 5 的三角形
Triangle t2(5, 7, 9); // 定义一个边长为 5, 7, 9 的三角形
double totalArea = t1 + t2; // 计算两个三角形的面积之和
cout << "Total area: " << totalArea << endl; // 输出面积之和
```
希望我的答案能够帮到你!
相关问题
设计一个三角形类 Triangle,包含三角形三条边长的私有数据成员,另有 一个重载运算符“+”,以实现求两个三角形对象的面积之和。用
好的,我理解你的问题是要我设计一个三角形类 Triangle,包含三角形三条边长的私有数据成员,并重载运算符“+”,以实现求两个三角形对象的面积之和。下面是一个参考实现:
```cpp
#include <cmath>
class Triangle {
private:
double a, b, c; // 三角形三条边长
public:
Triangle(double A, double B, double C): a(A), b(B), c(C) {} // 构造函数
double area() const { // 计算面积
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
Triangle operator+(const Triangle& t) const { // 重载运算符“+”
double A = a + t.a;
double B = b + t.b;
double C = c + t.c;
return Triangle(A, B, C);
}
};
```
这个类有三个私有数据成员 a、b、c,用来存储三角形的三条边长。构造函数接收三个参数,分别对应三个边长。成员函数 `area()` 用海伦公式计算三角形的面积。重载运算符“+”用来计算两个三角形的面积之和,它返回一个新的 Triangle 对象,新对象的三条边分别是两个 Triangle 对象的对应边之和。
用Java编写定义一个三角形类Triangle,要求提供3条边长信息,以及求周长、求面积等行为。然后再定义一个测试类TriangleTest,作为主程序来测试Triangle类。一些要求如下: (1)边长数据类型为普通整型即可,不能为负数。 (2)提供一个boolean型的私有成员canTri,用于判断三条边长能否构成三角形,并用公开方法isTri返回该私有成员变量canTri的状态。 (3)提供求周长的方法。 (4)提供求面积的方法。使用海伦公式:
好的,以下是Java代码实现:
Triangle类:
```java
public class Triangle {
private int sideA;
private int sideB;
private int sideC;
private boolean canTri;
public Triangle(int a, int b, int c) {
sideA = a;
sideB = b;
sideC = c;
canTri = isTriangle();
}
private boolean isTriangle() {
return sideA + sideB > sideC && sideB + sideC > sideA && sideA + sideC > sideB;
}
public boolean isTri() {
return canTri;
}
public int getPerimeter() {
if (!canTri) {
return -1;
}
return sideA + sideB + sideC;
}
public double getArea() {
if (!canTri) {
return -1;
}
double p = (sideA + sideB + sideC) / 2.0;
return Math.sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
}
}
```
TriangleTest类:
```java
public class TriangleTest {
public static void main(String[] args) {
Triangle t1 = new Triangle(3, 4, 5);
System.out.println("Can form triangle: " + t1.isTri());
System.out.println("Perimeter: " + t1.getPerimeter());
System.out.println("Area: " + t1.getArea());
Triangle t2 = new Triangle(3, 4, 8);
System.out.println("Can form triangle: " + t2.isTri());
System.out.println("Perimeter: " + t2.getPerimeter());
System.out.println("Area: " + t2.getArea());
}
}
```
测试结果:
```
Can form triangle: true
Perimeter: 12
Area: 6.0
Can form triangle: false
Perimeter: -1
Area: -1.0
```
阅读全文