Задача: Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
Проблема: не могу инициализировать координаты прямоугольников. Не работает конструктор. Среда разработки - Borland C++ 3.1.
| Код | #include <iostream.h>
enum boolean {FALSE, TRUE}; class TPoint { public: int x,y; int movePoint ( int newx, int newy); int removing ( int dx, int dy ); }; int TPoint::movePoint(int newx, int newy) { x = newx; y = newy; return 0; } int TPoint::removing(int dx, int dy) { x += dx; y += dy; return 0; } class TSquare { public: TPoint a,b; // a - top left corner // b - bottom right corner void move(int dx,int dy) { a.removing(dx,dy); b.removing(dx,dy); }
void grow(int dx,int dy) { a.x += dx; a.y += dy;
b.x += dx; b.y += dy; }
void intersect(const TSquare &r); void Union(const TSquare &r); boolean contains(const TPoint &p); boolean IsEmpty();
TSquare(int ax, int ay, int bx, int by) { // constructor a.x = ax; a.y = ay; b.x = bx; b.y = by; }; TSquare() { a.x = a.y = b.x = b.y = 0; }; // constructor
}; void TSquare::intersect(const TSquare &r) { a.x = (a.x > r.a.x) ? a.x : r.a.x; // max b.x = (b.x < r.b.x) ? b.x : r.b.x; // min
a.y = (a.y > r.a.y) ? a.y : r.a.y; // max b.y = (b.y < r.b.y) ? b.y : r.b.y; // min }; void TSquare::Union(const TSquare &r) { a.x = (a.x <= r.a.x) ? a.x : r.a.x; a.y = (a.y <= r.a.y) ? a.y : r.a.y;
b.x = (b.x >= r.b.x) ? b.x : r.b.x; b.y = (b.y >= r.b.y) ? b.y : r.b.y; }; boolean TSquare::contains(const TPoint &p) { return boolean(p.x >= a.x && p.x <= b.x && p.y >= a.y && p.y <= b.y); }; boolean TSquare::IsEmpty() { return boolean(a.x >= b.x || a.y >= b.y ); };
void main() {
int ax,ay,bx,by; cout << "Input square #1:"; cout << "\nTop left corner ->" << "x="; cin >> ax; cout << " y="; cin >> ay; cout << "\nBottom right corner ->" << "x="; cin >> bx; cout << " y="; cin >> by; TSquare S1=(ax,ay,bx,by);
cout << "Input square #2:"; cout << "\nTop left corner ->" << "x="; cin >> ax; cout << " y="; cin >> ay; cout << "\nBottom right corner ->" << "x="; cin >> bx; cout << " y="; cin >> by; TSquare S2=(ax,ay,bx,by);
}
|
|