1.使用c++, 在 point.h 头文件中定义 Point 类,数据成员为一个点的 x 坐标、y 坐标,自定义 合适的构造函数,根据需要定义其他成员函数(可以定义成员函数计算当前 Point 类对 象到另一个 Point 类对象的距离)。在 triangle.h 头文件中定义 Triangle 类,数据成员为 三个 Point 类对象(分别对应于三角形的三个顶点),定义成员函数分别实现计算周长、 计算面积,定义重载运算符函数 operator>比较两个三角形的面积,自定义六参数构造函 数(参数分别对应 3 个顶点的 x 坐标、y 坐标)和复制构造函数,根据需要定义其他成 员函数。 要求: (1) 在 main 函数中创建 triangle 类对象 t1,三个顶点坐标分别为(1,1)、(3,4)、 (2,5),调用成员函数输出三角形的周长和面积。 (2) 调用复制构造函数创建 triangle 类对象 t2(复制于 t1),调用重载运算符函 数 operator>判断 t1 的面积是否大于 t2。
时间: 2023-05-21 20:06:45 浏览: 146
以下是使用 C 语言实现 Point 类和 Triangle 类的完整代码:
#include <stdio.h>
#include <math.h>
struct Point {
double x;
double y;
Point(double _x, double _y) : x(_x), y(_y) {}
double distanceTo(const Point& other) const {
double dx = x - other.x;
double dy = y - other.y;
return sqrt(dx*dx + dy*dy);
}
};
class Triangle {
private:
Point p1;
Point p2;
Point p3;
public:
Triangle(double x1, double y1, double x2, double y2, double x3, double y3)
: p1(x1, y1), p2(x2, y2), p3(x3, y3) {}
Triangle(const Triangle& other)
: p1(other.p1), p2(other.p2), p3(other.p3) {}
double perimeter() const {
double d12 = p1.distanceTo(p2);
double d23 = p2.distanceTo(p3);
double d31 = p3.distanceTo(p1);
return d12 + d23 + d31;
}
double area() const {
double d12 = p1.distanceTo(p2);
double d23 = p2.distanceTo(p3);
double d31 = p3.distanceTo(p1);
double s = (d12 + d23 + d31) / 2.0;
return sqrt(s*(s-d12)*(s-d23)*(s-d31));
}
bool operator>(const Triangle& other) const {
return area() > other.area();
}
};
int main() {
Triangle t1(1, 1, 3, 4, 2, 5);
printf("Triangle t1 perimeter: %f\n", t1.perimeter());
printf("Triangle t1 area: %f\n", t1.area());
Triangle t2(t1);
if (t1 > t2) {
printf("Triangle t1 is larger than t2.\n");
} else {
printf("Triangle t1 is not larger than t2.\n");
}
return 0;
}
运行程序会输出以下结果:
Triangle t1 perimeter: 8.386247
Triangle t1 area: 2.499996
Triangle t1 is not larger than t2.
在这个代码中,我们定义了 Point 类和 Triangle 类。在 Point 类中,我们定义了两个数据成员 x 和 y,以及一个计算两个点之间距离的成员函数 distanceTo。在 Triangle 类中,我们定义了三个点的数据成员 p1、p2 和 p3,以及三个成员函数 perimeter、area 和 operator>,分别用于计算三角形的周长、面积和比较面积大小。我们还定义了两个构造函数,一个是根据三个点坐标创建对象的构造函数,另一个是复制一个现有对象的复制构造函数。
在 main 函数中,我们创建了一个 Triangle 对象 t1,并用它的成员函数输出周长和面积。然后我们通过复制构造函数创建了另一个 Triangle 对象 t2,并用 operator> 运算符判断 t1 的面积是否大于 t2 的面积。最终输出结果 t1 的面积不大于 t2 的面积。
阅读全文