Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef FIGURY_H
- #define FIGURY_H
- #include <iostream>
- #include <cmath>
- using namespace std;
- class Figure
- {
- public:
- virtual ~Figure() = default;
- virtual void print() const = 0;
- virtual double getPerimeter() const = 0; //ma dac liczbe
- };
- class Square : public Figure
- {
- private:
- double bok;
- public:
- Square(double a=1) : bok(a) {};
- ~Square()
- {
- cout << "usunieto kwadrat" << endl;
- }
- void print() const
- {
- cout << "KWADRAT ";
- }
- double getPerimeter() const
- {
- return 4*bok;
- }
- };
- class Triangle : public Figure
- {
- private:
- double bok1, bok2, bok3;
- public:
- Triangle(double a=1, double b=1, double c=1) : bok1(a), bok2(b), bok3(c) {};
- ~Triangle()
- {
- cout << "usunieto kwadrat" << endl;
- }
- void print() const
- {
- cout << "TROJKAT ";
- }
- double getPerimeter() const
- {
- return bok1+bok2+bok3;
- }
- };
- class Circle : public Figure
- {
- private:
- double promien;
- public:
- Circle(double r=1) : promien(r) {};
- ~Circle()
- {
- cout << "usunieto kolo" << endl;
- }
- void print() const
- {
- cout << "KOLO ";
- }
- double getPerimeter() const
- {
- return 2.0 * M_PI * promien;
- }
- };
- //Zdefiniować klasę FigureTab z dynamiczną tablicą przechowująca wskaźniki
- //do dowolnych figur z utworzonych klas.
- class FigureTab
- {
- int dlugosc;
- Figure **tab;
- public:
- FigureTab(int dl=0) : dlugosc(dl) //konstruktor
- {
- if (dlugosc>0)
- {
- tab = new Figure *[dlugosc] { nullptr };
- }
- else
- {
- dlugosc=0;
- tab=nullptr;
- }
- }
- ~FigureTab()
- {
- cout << endl << "destruktor FigureTab zadzialal " << endl;
- for (int i=0; i<dlugosc; i++)
- {
- delete tab[i];
- }
- delete[] tab;
- }
- void dodajFigure(Figure* nowa);
- };
- void FigureTab::dodajFigure(Figure* nowa) {
- if (tab == nullptr) { // tablica nie istnieje
- tab = new Figure * [1];
- tab[0] = nowa;
- }
- else {
- // tymczasowa tablica do przechowania dotychczasowej
- Figure** temp = new Figure * [dlugosc + 1];
- // przepisanie elementów z dotychczasowej tablicy do tymczasowo stworzonej
- for (int i{ 0 }; i < dlugosc; ++i) {
- temp[i] = tab[i];
- }
- delete[] tab;
- temp[dlugosc] = nowa;
- tab = temp;
- }
- ++dlugosc;
- }
- //Zdefiniować metodę pozwalającą na dodanie nowej figury do tablicy i metodę usuwającą
- //wszystkie figury z tablicy. Przeciążyć operator indeksowania tak, aby indeksowanie
- //elementów zaczynało się od 1.
- #endif // FIGURY_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement