#include "iostream.h" class TFigure { public: TFigure(const char *s = ""): name(s) { cout << name << " created ..." << endl; } //Перемещение фигуры void move_it(char *s,int step_x,int step_y) { int n; if (s=="triangle") n=3; else n=5; for(int i=0;i<n;i++) { TPoint[i].x+=step_x; TPoint[i].y+=step_y; } //текущая позиция void show_position(char *s) { cout<<s<< "in position:"; int n; if (s=="triangle") n=3; else n=5; for(int i=0;i<n;i++) { cout << " (" <<TPoint[i].x <<";"<<TPoint[i].y << ") "; } } 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(TPoint p1,TPoint p2,TPoint p3):TFigure("triangle") //конструктор { pts = new TPoint[3]; //создаём массив for(int i=0;i<3;i++) { cout << "Enter coordinates of apex" << i+1 << ":"; cin << TPoint[i].x << TPoint[i].y; } } ~TTriangle()//деструктор { delete [] pts; // удаляем массив } //вычисление площади double getS() const { return 0.5*(TPoint[1].y*TPoint[2].x-TPoint[2].y*TPoint[1].x+TPoint[2].y*TPoint[3].x- TPoint[3].y*TPoint[2].x-TPoint[1].y*TPoint[3].x+TPoint[1].y*TPoint[1].x); } }; class TPentagon: public TFigure { public: TPentagon(TPoint p1,TPoint p2,TPoint p3,TPoint p4,TPoint p5):TFigure("pentagon") //конструктор { pts = new TPoint[5]; //создаём массив for(int i=0;i<5;i++) { cout << "Enter coordinates of apex" << i+1 << ":"; cin << TPoint[i].x << TPoint[i].y; } } ~TTriangle()//деструктор { delete [] pts; // удаляем массив } //вычисление площади double getS() const { return 12.0;} }; char Compare(const TFigure &T1, const TFigure &T2) { return (T1.getS() < T2.getS()) ? "<" : ">"; } int main() { TTriangle T1; show_position("triangle");//смотрим позицию cout << T1.getS() << endl;//печатем площадь move_it("triangle",2,2);.//перемещаем show_position("triangle");//смотрим позицию cout << T1.getS() << endl;//проверяем площадь TPentagon T2; show_position("pentagon");//смотрим позицию cout << T2.getS() << endl;//печаетаем площадь move_it("pentagon",2,2);.//перемещаем show_position("pentagon");//смотрим позицию cout << T2.getS() << endl;//проверяем площадь cout << Compare(T1, T2) << endl; cout << Compare(T2, T1) << endl;//результаты должны быть разными return 0; }