Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <string>
- #include <iostream>
- #include "vld.h"
- using namespace std;
- struct Coordinate {
- int x, y;
- };
- class ColoredPoint {
- private:
- Coordinate coordinate;
- protected:
- string color;
- public:
- ColoredPoint() {
- this->coordinate = { NULL, NULL };
- }
- ColoredPoint(int _x, int _y) {
- this->coordinate = { _x, _y };
- }
- string getColor() {
- return this->color;
- }
- virtual void setColor(string _color) {
- this->color = _color;
- }
- Coordinate getCoordinates() {
- return this->coordinate;
- };
- virtual void setCoordinates(Coordinate _coordinate) {
- this->coordinate = _coordinate;
- };
- };
- class Line : public ColoredPoint {
- private:
- Coordinate coordinates[2];
- public:
- void setCoordinates(Coordinate _coordinates[2]) {
- this->coordinates[0] = _coordinates[0];
- this->coordinates[1] = _coordinates[1];
- }
- Coordinate* getCoordinates() {
- return this->coordinates;
- }
- };
- class Polyline : public ColoredPoint {
- private:
- Coordinate *coordinates;
- int pointsQty;
- void createCoordinates(int _pointsQty) {
- // Метод, выделяющий память для кривой линии
- if (pointsQty) {
- delete[] this->coordinates;
- }
- this->pointsQty = _pointsQty;
- this->coordinates = new Coordinate[_pointsQty];
- }
- public:
- Polyline() {
- this->coordinates = NULL;
- this->pointsQty = NULL;
- }
- void setCoordinates(Coordinate *_coordinates, int coordinatesQty) {
- // Метод, устанавливающий значение всех координат кривой линии
- createCoordinates(coordinatesQty);
- for (int i = 0; i < coordinatesQty; i++) {
- this->coordinates[i] = _coordinates[i];
- }
- }
- Coordinate* getCoordinates() {
- // Метод, возвращающий значение всех координат кривой линии
- return this->coordinates;
- }
- int getPointsQty() {
- // Метод возвращающий количество точек в кривой линии
- return pointsQty;
- }
- ~Polyline() {
- delete[] this->coordinates;
- }
- };
- class Picture {
- private:
- int coloredPointsQty, linesQty, polylinesQty;
- ColoredPoint *coloredPoints;
- Line *lines;
- Polyline *polylines;
- public:
- Picture(int _coloredPointsQty, int _linesQty, int _polylinesQty) {
- this->coloredPointsQty = _coloredPointsQty;
- this->linesQty = _linesQty;
- this->polylinesQty = _polylinesQty;
- this->coloredPoints = new ColoredPoint[this->coloredPointsQty];
- this->lines = new Line[this->linesQty];
- this->polylines = new Polyline[this->polylinesQty];
- }
- void inputColoredPoints() {
- // Ввод всех точек
- for (int i = 0; i < this->coloredPointsQty; i++) {
- cout << "Input colored point №" << i + 1 << endl;
- Coordinate temp;
- cout << "x: " << endl;
- cin >> temp.x;
- cout << "y: " << endl;
- cin >> temp.y;
- this->coloredPoints[i].setCoordinates(temp);
- string color;
- cout << "color: " << endl;
- cin >> color;
- this->coloredPoints[i].setColor(color);
- }
- }
- void inputLines() {
- // Ввод всех линий
- for (int i = 0; i < this->linesQty; i++) {
- cout << "Input line " << i + 1 << endl
- << "Input point 1: " << endl;
- Coordinate temp[2];
- cout << "x1: " << endl;
- cin >> temp[0].x;
- cout << "y1: " << endl;
- cin >> temp[0].y;
- cout << "Input point 2: " << endl;
- cout << "x2: " << endl;
- cin >> temp[1].x;
- cout << "y2: " << endl;
- cin >> temp[1].y;
- this->lines[i].setCoordinates(temp);
- string color;
- cout << "Input color: " << endl;
- cin >> color;
- this->lines[i].setColor(color);
- }
- }
- void inputPolylines() {
- // Ввод всех кривых линий
- for (int i = 0; i < this->polylinesQty; i++) {
- cout << "Input polyline " << i + 1 << endl
- << "Input polyline points qty" << endl;
- int pointsQty;
- cin >> pointsQty;
- Coordinate *temp = new Coordinate[pointsQty];
- for (int i = 0; i < pointsQty; i++) {
- cout << "Input point " << i << ":" << endl
- << "x" << i << ":" << endl;
- cin >> temp[i].x;
- cout << "y" << i << ":" << endl;
- cin >> temp[i].y;
- }
- this->polylines[i].setCoordinates(temp, pointsQty);
- cout << "Input color: " << endl;
- string color;
- cin >> color;
- this->polylines[i].setColor(color);
- delete[] temp;
- }
- }
- void inputPicture(){
- // Ввод картины
- this->inputColoredPoints();
- this->inputLines();
- this->inputPolylines();
- }
- void outputColoredPoints() {
- // Вывод всех точек
- if (!this->coloredPointsQty) {
- cout << "There's no colored points" << endl;
- return;
- }
- cout << endl << "Colored Points: " << endl;
- for (int i = 0; i < this->coloredPointsQty; i++) {
- Coordinate temp = this->coloredPoints[i].getCoordinates();
- string color = this->coloredPoints[i].getColor();
- cout << "Colored Point " << i + 1 << ": (" << temp.x << ", "
- << temp.y << ") color: " << color << endl;
- }
- cout << endl;
- }
- void outputLines() {
- // Вывод всех линий
- if (!this->linesQty) {
- cout << "There's no lines" << endl;
- return;
- }
- cout << endl << "Lines: " << endl;
- for (int i = 0; i < this->linesQty; i++) {
- Coordinate temp[2];
- temp[0] = this->lines[i].getCoordinates()[0];
- temp[1] = this->lines[i].getCoordinates()[1];
- string color = this->lines[i].getColor();
- cout << "Line " << i + 1 << ":" << endl
- << "Point 1: (" << temp[0].x
- << ", " << temp[0].y << ") "
- << "Point 2: (" << temp[1].x << ", "
- << temp[1].y << ") color: " << color << endl << endl;
- }
- cout << endl;
- }
- void outputPolylines() {
- // Вывод всех кривых линий
- if (!this->polylinesQty) {
- cout << "There's no polylines" << endl;
- return;
- }
- cout << endl << "Polylines: " << endl;
- for (int i = 0; i < this->polylinesQty; i++) {
- int pointsQty = this->polylines[i].getPointsQty();
- cout << "Polyline " << i + 1 << " " << endl;
- for (int j = 0; j < pointsQty; j++) {
- cout << "Point " << j + 1 << ": (" << this->polylines[i].getCoordinates()[j].x
- << ", " << this->polylines[i].getCoordinates()[j].y << ") " << endl;
- }
- string color = this->lines[i].getColor();
- cout << "color: " << color << endl << endl;
- }
- cout << endl;
- }
- void outputPicture() {
- cout << "Picture: " << endl << endl;
- this->outputColoredPoints();
- this->outputLines();
- this->outputPolylines();
- }
- ~Picture() {
- delete[] this->coloredPoints;
- delete[] this->lines;
- delete[] this->polylines;
- }
- };
- int main() {
- freopen("input.txt", "r", stdin);
- Picture a(3, 3, 3);
- a.inputPicture();
- a.outputPicture();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment