|
1 | 1 | # Экзаменационный билет №21
|
2 | 2 |
|
| 3 | +## 1.Плексы как представление рисунков, состоящих из точек и соединяющих их отрезков. |
3 | 4 |
|
4 |
| -## 1. Плексы как представление рисунков, состоящих из точек и соединяющих их отрезков. |
5 |
| -## 2. Структуры хранения динамических структур типа стек и очередь |
| 5 | +Рассмотрим в качестве базовых объектов основные геометрические фигуры – точку, окружность, прямоугольник и т.д. |
| 6 | + |
| 7 | +**Информационное описание объектов** – параметры фигуры (координаты, размер, радиус и др.). В общем случае, описание фигуры включает значение координат некоторой опорной точки. |
| 8 | + |
| 9 | +**Операции обработки** геометрических объектов включают методы для задания и изменения параметров; расширим набор операций процедурами визуализации (например, на экране дисплея) и скрытия фигур. |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +Для обеспечения возможности динамической визуализации геометрических объектов введем тип данных, значения которого вычисляются в соответствии с задаваемым формульным выражением. |
| 14 | + |
| 15 | +**Составной объект** – набор геометрических объектов (как базовых, так и составных), рассматриваемых при выполнении операций обработки как единый объект. |
| 16 | + |
| 17 | +**Геометрический объект** может быть сконструирован с использованием уже существующих объектов (например, ломаная может быть определена через набор конечных точек составляющих отрезков). |
| 18 | + |
| 19 | +**Геометрический объект** может быть образован при помощи сборки существующих объектов – рассмотрим данный способ построения новых объектов на примере рисунков (чертежей), образованных только из объектов двух базовых типов: точек и линий |
| 20 | + |
| 21 | + |
| 22 | + |
| 23 | + |
| 24 | + |
| 25 | +- Узел структуры хранения представляет линию чертежа. |
| 26 | +- Указатель на начальную точку линии может также указывать на линию, т.е. конечная точка предыдущей линии является начальной точкой следующей линии. |
| 27 | +- **Плекс** - структура хранения данного вида (содержит элементы разного типа). **Плекс** является общей структурой хранения сетевых моделей данных. |
| 28 | +- Повторяющая точка на чертеже должна быть представлена одним и тем же объектом (не следует допускать множественности представления одного и того же значения). |
| 29 | +- Разработанная структура хранения позволяет обеспечить представление чертежей, которые можно нарисовать без отрыва карандаша от бумаги. |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +## 2. Сравнение непрерывной и списковой структур хранения. |
| 34 | + |
| 35 | + |
| 36 | + |
| 37 | +- Для хранения элементов базисного множества выделяется вектор памяти размера, достаточного для хранения максимально возможного количества значения в стеке. |
| 38 | +- Хранение значений в памяти осуществляется последовательно от младшего элемента вектора к старшему. |
| 39 | +- Для запоминания количества хранимых в стеке значений используется индекс последнего занятого элемента в векторе. |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | +```C++ |
| 48 | +#define MemSize 25 // размер памяти для стека |
| 49 | +class TStack |
| 50 | +{ |
| 51 | + protected: |
| 52 | + int Mem[MemSize]; // память для СД |
| 53 | + int Top; // индекс последней занятой ячейки |
| 54 | + public: |
| 55 | + TStack () { Top = -1; } |
| 56 | + int IsEmpty (void) const { Top == -1; } |
| 57 | + int IsFull (void) const { Top == MemSize-1;} |
| 58 | + void Put ( const int Val ) { Mem[++Top] = val; } |
| 59 | + TData Get (void) { return Mem[Top--]; } |
| 60 | +}; |
| 61 | +``` |
| 62 | +
|
| 63 | +### Очередь |
| 64 | +
|
| 65 | + |
| 66 | +
|
| 67 | + |
| 68 | +
|
| 69 | +**Способы достижения полного использования памяти:** |
| 70 | +
|
| 71 | + |
| 72 | +
|
| 73 | +Сдвиг значений очереди после выборки очередного значения (т.е. обеспечение `Li=0`) – возрастание накладных расходов, использование левого участка свободной области при достижении `Hi=n-1` (т.е. при отсутствии свободной памяти справа). |
| 74 | +
|
| 75 | +**Циклический или кольцевой буфер** - структура хранения, получаемая из вектора расширением отношения следования парой `p(an,a1)`. Реализация кольцевого буфера логически может быть обеспечена переходом индексов `Li` и `Hi` при достижении граничного значения `MemSize-1` на индекс первого элемента вектора памяти. |
0 commit comments