2.编写一个程序,定义一个三角形类Triangle,在类中包含3个私有数据成员用于保存三角形的三条边长。成员函数Area( )用于计算三角形的面积。重载运算符“+”可以求两个三角形对象的面积之和。要求重载为类的友元函数。编。
时间: 2023-06-06 18:06:11 浏览: 215
回答:好的,我可以帮你解答这个问题。
以下是 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程序,该程序首先定义一个能够表示任意三角形的类。再编写一个测试类,要求首先输入三角形的三条边长,然后构建三角形对象并计算输出三角形的面积和周长。
以下是一个可以计算三角形面积和周长的 Java 程序,包含一个 `Triangle` 类和一个 `TestTriangle` 测试类。
`Triangle` 类包含三个私有的实例变量,分别是三角形的三条边长,以及一个计算面积和周长的方法。在方法中,我们使用海龙公式计算三角形的面积,并根据三条边长计算周长。
`TestTriangle` 类中,我们先使用 `Scanner` 类从控制台输入三角形的三条边长,然后构建一个 `Triangle` 对象,并使用对象的方法计算并输出三角形的面积和周长。
```java
import java.util.Scanner;
public class Triangle {
private double a;
private double b;
private double c;
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double calculateArea() {
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
public double calculatePerimeter() {
return a + b + c;
}
}
public class TestTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三角形的三条边长:");
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
Triangle triangle = new Triangle(a, b, c);
double area = triangle.calculateArea();
double perimeter = triangle.calculatePerimeter();
System.out.println("三角形的面积为:" + area);
System.out.println("三角形的周长为:" + perimeter);
}
}
```
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)