#include "iostream.h" #include "conio.h" int xmax1,ymax1,xmin1,ymin1,xmax2,ymax2,xmin2,ymin2; class TFigure { public: //конструктор TFigure(int numPoints, const char *s = ""):name(s), ptsAmount(numPoints) { pts = new TPoint[ptsAmount]; cout << name << " created ..." << endl; for(int i = 0; i < ptsAmount; i++) { TPoint p; cout << "Enter coordinates of apex" << i+1 << ":"; cin >> p.x >> p.y; pts[i] = p; } } //деструктор virtual ~TFigure() { delete [] pts; } //перемещение void move_it(int step_x, int step_y) { for(int i = 0; i < ptsAmount; i++) { pts[i].x += step_x; pts[i].y += step_y; } } //вывод позиции фигуры void show_position() { for(int i = 0;i < ptsAmount; i++) cout << " (" << pts[i].x << ";" << pts[i].y << ") "; } virtual void getMax(); virtual void getMin(); struct TPoint { TPoint(int px=0,int py=0):x(px),y(py) { } int x, y; }; private: const char *name; protected: int ptsAmount;TPoint *pts; }; //класс треугольника class TTriangle: public TFigure { public: TTriangle(int numPoints = 3) : TFigure(numPoints, "triangle") { } void getMax() { xmax1=pts[0].x; ymax1=pts[0].y; for(int i = 0; i < 3; i++) { if (pts[i].x>xmax1) xmax1=pts[i].x; if (pts[i].y>ymax1) ymax1=pts[i].y; }; cout << "Max:(" << xmax1<< ";"<< ymax1 << ")"; }; void getMin() { xmin1=pts[0].x; ymin1=pts[0].y; for(int i = 0; i < 3; i++) { if (pts[i].xxmax2) xmax2=pts[i].x; if (pts[i].y>ymax2) ymax2=pts[i].y; }; cout << "Max:(" << xmax2<< ";"<< ymax2 << ")"; }; void getMin() { xmin2=pts[0].x; ymin2=pts[0].y; for(int i = 0; i < 4; i++) { if (pts[i].xxmax1) if ((ymax1>ymin2)&&(((ymin1>ymin2)&&(ymin1ymin2))) ) flag=true; //если Т2 находится выше Т1 if (ymax1xmin2)&&(xmin1xmin2))) ) flag=true; //если Т1 находится правее Т2 if (xmax2ymin2)&&(((ymin1>ymin2)&&(ymin1ymin2))) ) flag=true; //если Т1 находитя выше Т2 if (ymax1>ymax2) if ((xmin1xmin2)&&(xmin1xmin2))) ) flag=true; return flag; } int main() { TTriangle T1; //создаём TRectangle T2; T1.show_position(); //позиция T2.show_position(); if (IsIntersect(T1,T2)) cout << "Intersection-yes"; else cout << "Intersection-no"; T2.move_it(2,2); // перемещаем T1.move_it(2,2); T1.show_position(); //позиция T2.show_position(); if (IsIntersect(T1,T2)) cout << "Intersection-yes"; else cout << "Intersection-no"; getche(); }