设计用于表示点、线和三角形的类: Point、 Line 和Triangle.要求如下: (1) Point类中包含两个用于表示点的X和Y坐标分量的公有数据成员,能够根据指定的X和Y坐标构建点对象。 (2) Line类中包含两个用于表示线段瑞点的私有对象成员,能够根据指定的两点构造线段对象(要求构造雨数的参数为常引用),具有计算线段长度的公有成员函数。 (3) Triangle类中包含三个用于表示三角顶点的私有对象成员,能够根据指定的三点构造三角形对象(要求构造函数的参数为常明用) .具有计算三角形周长和面积的公有成员函数。 在main函数中: 根据输入的三个点的坐标构建三角形对象。并输出的三角形的周长和面积。 输入 依次输入三个点的坐标:x1, y1, x2, y2, x3, y3 输出 输出三个点所构成的三角形的周K和面积
时间: 2024-02-21 13:02:22 浏览: 168
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
5星 · 资源好评率100%
根据题目要求,可以设计如下的 Point、Line 和 Triangle 类:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 定义点类
class Point {
public:
Point(double x = 0, double y = 0) : x_(x), y_(y) {}
public:
double x_;
double y_;
};
// 定义线段类
class Line {
public:
Line(const Point& p1, const Point& p2) : p1_(p1), p2_(p2) {}
public:
double length() const {
double dx = p1_.x_ - p2_.x_;
double dy = p1_.y_ - p2_.y_;
return sqrt(dx * dx + dy * dy);
}
private:
Point p1_;
Point p2_;
};
// 定义三角形类
class Triangle {
public:
Triangle(const Point& p1, const Point& p2, const Point& p3) : p1_(p1), p2_(p2), p3_(p3) {}
public:
double perimeter() const {
double a = Line(p1_, p2_).length();
double b = Line(p2_, p3_).length();
double c = Line(p3_, p1_).length();
return a + b + c;
}
double area() const {
double a = Line(p1_, p2_).length();
double b = Line(p2_, p3_).length();
double c = Line(p3_, p1_).length();
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
private:
Point p1_;
Point p2_;
Point p3_;
};
int main() {
double x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
Point p1(x1, y1);
Point p2(x2, y2);
Point p3(x3, y3);
Triangle tri(p1, p2, p3);
cout << "周长:" << tri.perimeter() << endl;
cout << "面积:" << tri.area() << endl;
return 0;
}
```
在 main 函数中,首先输入三个点的坐标,然后构造 Point 对象并传入 Triangle 的构造函数中,最后计算三角形的周长和面积并输出。
阅读全文