#include "iostream.h"

class TFigure
{
    public:
    TFigure(const char *s = ""): name(s)
    {
        cout << name << " created ..." << endl;
    }

    //Перемещение фигуры
    virtual void move_it(int step_x,int step_y);

    //текущая позиция
    virtual void show_position();

    struct TPoint
    {
        TPoint(int px = 0, int py = 0): x(px), y(py)
        {
        }
        int x, y;
    };

    virtual double getS() const = 0;

    private:
    const char *name;// Название фигуры

};

// Определяем класс - наследник от TFigure
class TTriangle: public TFigure
{
    private:
    TPoint *pts;

    public:
    //конструктор
    TTriangle(int numPoints=3):TFigure("triangle")
    {
        pts = new TPoint[3]; //создаём массив
        for(int i=0;i<numPoints;i++)
        {
            TPoint p;
            cout << "Enter coordinates of apex" << i+1 << ":";
            cin << p.x << p.y;
            pts[i]=p;
        }
    }

    //деструктор
    ~TTriangle()
    {
        delete [] pts;
    }

    //вычисление площади
    double getS() const
    {
    return 0.5*(pts[0].y*pts[1].x-pts[1].y*pts[0].x+pts[1].y*pts[2].x-pts[2].y*pts[1].x-pts[0].y*pts[2].x+pts[0].y*pts[0].x);
    }

    void show_position()
    {
        for(int i=0;i<3;i++) cout << " (" <<pts[i].x <<";"<<pts[i].y << ") ";
    }

    void move_it(int step_x,int step_y)
    {
        for(int i=0;i<3;i++)
        {
            pts[i].x+=step_x;
            pts[i].y+=step_y;
        }
    }


};

class TPentagon: public TFigure
{
    private:
    TPoint *pts;

    public:
    //конструктор
    TPentagon(int numPoints=5):TFigure("pentagon")
    {
        pts = new TPoint[numPoints];
        for(int i=0;i<numPoints;i++)
        {
            TPoint p;
            cout << "Enter coordinates of apex" << i+1 << ":";
            cin << p.x << p.y;
            pts[i]=p;
        }
    }

    //деструктор
    ~TPentagon()
    {
        delete [] pts;
    }

    //вычисление площади
    double getS() const {
    return 12.0;}

    void show_position()
    {
        for(int i=0;i<5;i++) cout << " (" <<pts[i].x <<";"<<pts[i].y << ") ";
    }

    void move_it(int step_x,int step_y)
    {
        for(int i=0;i<5;i++)
        {
            pts[i].x+=step_x;
            pts[i].y+=step_y;
        }
    }

};

char Compare(const TFigure &T1, const TFigure &T2)
{
    return (T1.getS() < T2.getS()) ? '<' : '>';
}


int main() {

  TTriangle T1;
  T1.show_position;//смотрим позицию
  cout << T1.getS() << endl;//печатем площадь
  T1.move_it(2,2);.//перемещаем
  T1.show_position;//смотрим позицию
  cout << T1.getS << endl;//проверяем площадь

  TPentagon T2;
  T2.show_position;//смотрим позицию
  cout << T2.getS << endl;//печаетаем площадь
  T2.move_it(2,2);.//перемещаем
  T2.show_position;//смотрим позицию
  cout << T2.getS << endl;//проверяем площадь

  cout << Compare(T1, T2) << endl;
  cout << Compare(T2, T1) << endl;//результаты должны быть разными

  return 0;

}