Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Конструторы.


Автор: Rencom 24.5.2006, 19:11
Задача: Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.

Проблема: не могу инициализировать координаты прямоугольников. Не работает конструктор. Среда разработки - 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);

    }
 

Автор: Rockie 24.5.2006, 19:22
поубирай равно при вызовах конструктора 

Автор: Rencom 24.5.2006, 19:43
блин.... ты прав.. спасибо 

Автор: MAKCim 24.5.2006, 21:22
Rencom
зачем?
Цитата

Код

enum boolean {FALSE, TRUE};

 

Автор: Амортизатор 24.5.2006, 22:32
Может парень ностальгирует по явеsmile)) 

Автор: DeadSoul 24.5.2006, 22:35
Амортизатор, этот парень мазахист. Пусть он попробует скомпилить данный код под виндой используя WinApi 

Автор: HappyLife 25.5.2006, 11:01
насколько известно в Borland C++ 3.1.отсутвуют тип bool. 

Автор: MAKCim 25.5.2006, 18:23
Цитата

насколько известно в Borland C++ 3.1.отсутвуют тип bool.  

не проверял  smile 
если нет, тогда ладно 

Автор: Амортизатор 25.5.2006, 22:06
Rencom, пользуйся ANSI-совместимым компилятором. Кстати, в C тип bool появился насколько я помню только в ANSI 99, поэтому может быть тот стандарт C++, который поддерживается компилятором Borland C++ 3.1, попросту не поддерживает этот тип. 

Автор: MAKCim 26.5.2006, 07:50
Цитата

Кстати, в C тип bool появился насколько я помню только в ANSI 99

нет, проверено опытным путем 

Автор: Rencom 26.5.2006, 21:23
в Borland C++ 3.1 действительно нет типа bool, создал для удобства.


Цитата

Rencom, пользуйся ANSI-совместимым компилятором. 

например каким?) 

Автор: MAKCim 26.5.2006, 23:33
Цитата

например каким?)  

многими
имхо, лучший gcc (или его аналог в винде, про comeau не говорю)
да к тому же он бесплатный 

Автор: KAdot 27.5.2006, 15:39
MAKCim
в с99 тип bool есть
Код

#include <stdbool.h>
  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)