double arrow

Пример 2: Класс, описывающий прямоугольник

#include <iostream>

#include <conio.h>

#include <windows.h>

using namespace std;

class CSize

{

friend class CRect;

/* Объявляем класс CRect дружественным для того, чтобы он имел доступ к элементам данных класса CSize */

int cx, cy; // размер по горизонтали и размер по вертикали

public:

CSize(int x = 0, int y=0): cx(x), cy(y){};

// в данной программе требуется только конструктор класса CSize

};

// Класс, описывающий прямоугольники:

class CRect

{

int left, top, right, bottom;

// координаты верхнего левого и нижнего правого углов прямоугольников

public:

// Конструктор:

CRect (int l=0, int t=0, int r=0, int b = 0)

{ left = l; top = t; right = r; bottom = b;}

// Ширина и высота прямоугольника:

int Width() { return right - left;}

int Height(){ return bottom - top;}

// функция, которая выводит координаты левого верхнего и правого нижнего
// углов прямоугольника:

void Draw()

{

cout << "(" << left << ";" << top << ") (" << right << ";" << bottom << ")" << endl;

}

// операция +=, которая выполняет сдвиг прямоугольника на заданные расстоя­// ния:

CRect& operator += (CSize& size)

{

left += size.cx;

right += size.cx;

top += size.cy;

bottom += size.cy;

return *this; //функция возвращает текущий объект

}

// операция +, которая выполняет сдвиг прямоугольника на заданные расстояния:

CRect operator + (CSize& size)

{

CRect tmp = *this;

tmp += size;

return tmp; // функция возвращает временный объект

}

};

//===================================================

int main()

{

//Настройки шрифтов и региональных стандартов:

if(SetConsoleCP(1251)==0)

//проверка правильности установки кодировки символов для ввода

{

cerr<<"Fialed to set codepage!"<<endl;

/* если не удалось установить кодовую страницу, вывод сообщения об ошибке */

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

CRect rect0(10,10, 50,30); // Объявляем прямоугольник

CRect rect = rect0;

// копия прямоугольника (соответствующую операцию сгенерирует компилятор)

// выводим информацию о прямоугольниках:

for (int i=0; i<=11; i++) // счетчик i отсчитывает ряды прямоугольников

{

for (int j=1; j<=14; j++)

// в каждом ряду расположено по 14 прямоугольников

{

rect.Draw(); // “рисуем” прямоугольник

rect += CSize(rect.Width()+2, 0);

// сдвигаем прямоугольник вправо, используя операцию +=

}

rect = rect0 + CSize(0, (rect.Height()+5)*i);

// сдвигаем прямоугольник вниз с помощью операции +

}

_getch();

return 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: