#include <iostream>
#include <cmath>
using namespace std;
// 定义二维点类
class Point {
private:
int X;
int Y;
public:
Point() : X(0), Y(0) {} // 默认构造函数
Point(int x, int y) : X(x), Y(y) {} // 构造函数
int GetX() const { return X; }
int GetY() const { return Y; }
};
// 定义四边形类
class Quadrilateral {
private:
Point p[4];
double Len;
public:
// 构造函数
Quadrilateral(Point points[4]) {
for (int i = 0; i < 4; ++i) {
p[i] = points[i];
}
CalculateLength();
}
// 拷贝构造函数
Quadrilateral(const Quadrilateral& other) {
for (int i = 0; i < 4; ++i) {
p[i] = other.p[i];
}
Len = other.Len;
}
// 计算周长
double Perimeter() const {
return Len;
}
// 计算边长
void CalculateLength() {
double totalLength = 0;
for (int i = 0; i < 4; ++i) {
int nextIndex = (i + 1) % 4;
int dx = p[nextIndex].GetX() - p[i].GetX();
int dy = p[nextIndex].GetY() - p[i].GetY();
totalLength += sqrt(dx * dx + dy * dy);
}
Len = totalLength;
}
// 输出四边形顶点坐标
void PrintVertices() const {
for (int i = 0; i < 4; ++i) {
cout << "Vertex " << i+1 << ": (" << p[i].GetX() << ", " << p[i].GetY() << ")" << endl;
}
}
};
int main() {
// 创建二维点对象
Point points[4] = {Point(0, 0), Point(3, 0), Point(3, 4), Point(0, 4)};
// 创建四边形对象
Quadrilateral quad(points);
// 输出四边形顶点坐标
cout << "Quadrilateral Vertices:" << endl;
quad.PrintVertices();
// 输出四边形周长
cout << "Quadrilateral Perimeter: " << quad.Perimeter() << endl;
return 0;
}