#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; }