From 7f4cfc6c2114b81bc480f05ceebc643598a92d25 Mon Sep 17 00:00:00 2001 From: angeld55 Date: Fri, 28 May 2021 14:27:39 +0300 Subject: added sem 14 --- Sem. 14/ShapesCollection/ShapesCollection.cpp | 67 +++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Sem. 14/ShapesCollection/ShapesCollection.cpp (limited to 'Sem. 14/ShapesCollection/ShapesCollection.cpp') diff --git a/Sem. 14/ShapesCollection/ShapesCollection.cpp b/Sem. 14/ShapesCollection/ShapesCollection.cpp new file mode 100644 index 0000000..0fe828c --- /dev/null +++ b/Sem. 14/ShapesCollection/ShapesCollection.cpp @@ -0,0 +1,67 @@ +#include "ShapesCollection.h" + +void ShapesCollection::addCircle(double x, double y, double radius) +{ + Circle* ptr = new Circle(x, y, radius); + collection.push_back(ptr); +} +void ShapesCollection::addRectangle(double x1, double y1, double x3, double y3) +{ + Rectangle* ptr = new Rectangle(x1, y1, x3, y3); + collection.push_back(ptr); +} +void ShapesCollection::addTriangle(double x1, double y1, double x2, double y2, double x3, double y3) +{ + Triangle* ptr = new Triangle(x1, y1, x2, y2, x3, y3); + collection.push_back(ptr); +} +void ShapesCollection::addRhombus(double x1, double y1, double x2, double y2) +{ + collection.push_back(new Rhombus(x1, y1, x2, y2)); +} + +void ShapesCollection::addSquare(double x1, double y1, double sideLength) +{ + collection.push_back(new Square(x1, y1, sideLength)); +} + +void ShapesCollection::printAreas() +{ + for (int i = 0; i < collection.size(); i++) + std::cout << collection[i]->getArea() << " " << std::endl; +} +void ShapesCollection::printPers() +{ + for (int i = 0; i < collection.size(); i++) + std::cout << collection[i]->getPer() << " " << std::endl; +} + +void ShapesCollection::copyFrom(const ShapesCollection& other) +{ + for (int i = 0; i < other.collection.size(); i++) + collection.push_back(other.collection[i]->clone()); +} +void ShapesCollection::free() +{ + for (int i = 0; i < collection.size(); i++) + delete collection[i]; + collection.clear(); +} + +ShapesCollection::ShapesCollection(const ShapesCollection& other) +{ + copyFrom(other); +} +ShapesCollection& ShapesCollection::operator= (const ShapesCollection& other) +{ + if (this != &other) + { + free(); + copyFrom(other); + } + return *this; +} +ShapesCollection::~ShapesCollection() +{ + free(); +} \ No newline at end of file -- cgit v1.3.1-23-gd82d