Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование задач с применением структурированных данных. Лабораторный практикум.pdf
X
- •ВВЕДЕНИЕ
- •ОБРАБОТКА МАССИВОВ ДАННЫХ С ПРИМЕНЕНИЕМ ФУНКЦИЙ
- •1.1. Общие рекомендации по работе с динамическими массивами
- •1.2. Пример программы для работы с динамическими массивами
- •1.3. Первое задание к лабораторной работе № 1
- •1.4. Общие рекомендации по использованию функций
- •ЛАБОРАТОРНАЯ РАБОТА № 2
- •ПРОГРАММНАЯ ОБРАБОТКА СТРОК И СТРУКТУР
- •2.1. Общие рекомендации по работе со строками
- •1.5. Пример программы для работы с функциями
- •1.6. Второе задание к лабораторной работе № 1
- •1.8. Третье задание к лабораторной работе № 1
- •2.2. Пример программы для работы со строками
- •2.3. Первое задание к лабораторной работе № 2
- •2.4. Общие рекомендации по работе с данными типа string
- •2.5. Второе задание к лабораторной работе № 2
- •2.6. Общие рекомендации по работе со структурами
- •2.7. Пример программы для работы со структурами
- •2.8. Третье задание к лабораторной работе № 2
- •Итого
- •Итого
- •Итого
- •Итого
- •Итого
- •Итого
- •Итого
- •Итого
- •ПРОГРАММНЫЕ МЕТОДЫ РАБОТЫ
- •С ЦЕЛОЧИСЛЕННЫМИ ДАННЫМИ
- •3.1. Общие рекомендации
- •3.2. Первое задание к лабораторной работе № 3
- •3.3. Системы счисления и перевод чисел из одной системы в другую
- •3.4. Второе задание к лабораторной работе № 3
- •ЛАБОРАТОРНАЯ РАБОТА № 4
- •ТЕХНОЛОГИИ РАБОТЫ С ФАЙЛАМИ
- •4.1. Общие рекомендации по работе с файлами
- •4.2. Первое задание для лабораторной работы № 4
- •4.3. Пример программы для работы с файлами структур
- •4.4. Второе задание для лабораторной работы № 4
- •ЛАБОРАТОРНАЯ РАБОТА № 5
- •МЕТОДЫ СОРТИРОВКИ И ИХ ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
- •5.1. Общие рекомендации по реализации методов сортировки
- •5.2. Задания к лабораторной работе № 5
- •ЛАБОРАТОРНАЯ РАБОТА № 6
- •ЛИНЕЙНЫЕ СПИСКИ
- •6.2. Пример программы работы с линейным списком
- •6.3. Задания к лабораторной работе № 6
- •ЛАБОРАТОРНАЯ РАБОТА № 7
- •ПРОГРАММНОЕ СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ КЛАССОВ
- •7.1. Общие рекомендации по работе с классами
- •7.2. Пример программы реализации класса
- •7.3. Задания к лабораторной работе № 7
- •ЛАБОРАТОРНАЯ РАБОТА № 8
- •РАБОТА С РОДИТЕЛЬСКИМИ И ДОЧЕРНИМИ КЛАССАМИ
- •8.2. Пример программы с виртуальными функциями
- •8.3. Виртуальные функции и абстрактные классы
- •8.4. Задания к лабораторной работе № 8
- •ЛАБОРАТОРНАЯ РАБОТА № 9
- •РАБОТА С КОНТЕЙНЕРНЫМИ КЛАССАМИ И МОДУЛЯМИ
- •9.1. Общие сведения о контейнерных классах и векторах
- •9.2. Общие сведения о модулях
- •9.3. Пример программы на С++
- •9.4. Задания к лабораторной работе № 9
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

– длина;
- материал (дуб, сосна, липа).
Дополнительные поля класса «Шкаф»:
– ширина;
– длина;
- высота;
- цвет (венге, венге/дуб, эбони/белый, орех, бук).
Вариант № 26
Базовый класс – «Сетевые кабели», производные классы «Коаксиальный», «Витая пара».
Поля базового класса:
– название;
- тип кабеля (например, коаксиальный, витая пара);
- вид типа кабеля (для коаксиального - тонкий, толстый; для витой пары –
неэкранированная, экранированная);
- длина сегмента в м (для коаксиального кабеля: тонкий - 185, толстый -
500; для витой пары – 100);
- количество узлов на одном сегменте (для коаксиального кабеля: тонкий
- 30, толстый - 100; для витой пары – 2);
- цена.
Дополнительные поля класса «Коаксиальный»:
– стандарт Ethernet (например: 10BASE-5 (толстый коаксиальный кабель с тол-
щиной кабеля 0,5 дюйма), 10BASE-2 (тонкий коаксиальный кабель с толщиной
кабеля 0,2 дюйм))
- марка кабеля (для толстого кабеля - RG-8, RG-11; для тонкого кабеля -
RG-58/U, RG-58 A/U).
Дополнительные поля класса «Витая пара»:
– категория (5Е, 6Е, 7Е, 8Е);
- варианты экранирования (FTP – один общий экран, U/FTP - экраниро-
вание каждой пары отдельно, S/FTP – экранирование каждой пары отдельно и
дополнительно общий экран).
Вариант № 27
Базовый класс – «Изделия», производные классы «Процессор», «Память»,
«Диск»,
Поля базового класса:
– тип изделия;
– количество на складе.
Дополнительные поля класса «Процессор»:
– тактовая частота в МГц;
– скорость;
– разрядность (32/64 бит).
Дополнительные поля класса «Память»:
131

– тип памяти (например, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM);
– тактовая частота шины (возможные значения находятся в интервале от
800 до 8400 МГц.
Дополнительные поля класса «Диск»:
- объем данных в ГБ или ТБ;
– интерфейс (стандарт обмена данными), возможные значения - ATA
(IDE, PATA), SATA.
Вариант № 28
Базовый класс – «Дополнительные устройства», производные классы
«Монитор», «Клавиатура», «Мышь».
Поля базового класса:
– тип устройства;
– цена.
Дополнительные поля класса «Монитор»:
– модель;
– длина диагонали;
- разрешение.
Дополнительные поля класса «Клавиатура»:
– тип клавиатуры (мембранная, механическая);
– количество кнопок (стандартное – 105, нестандартное).
Дополнительные поля класса «Мышь»:
– тип (механическая, оптическая, дистанционная);
– разъем для подключения (к порту РС/2, USB-порту).
Вариант № 29
Базовый класс – «Вспомогательные устройства», производные классы
«Видеокарта», «Принтер», «Сканер».
Поля базового класса:
– тип устройства;
– цена;
- количество на складе.
Дополнительные поля класса «Видеокарта»:
– тип видеопамяти (возможные значения - GDDR2, GDDR3, GDDR4 или
GDDR5);
– объем видеопамяти в Mb, или Gb.
Дополнительные поля класса «Принтер»:
– модель принтера;
– скорость печати в стр./мин.
Дополнительные поля класса «Сканер»:
– оптическое разрешение, возможные значения - от 600 dpi до 1200 dpi;
– скорость сканирования (страниц в минуту).
132

Вариант № 30
Базовый класс – «Печатающие устройства», производные классы «Лазерные принтеры», «Струйные принтеры».
Поля базового класса:
- название;
– модель;
- производитель (например, Canon, Epson, HP);
- качество печати (хорошее – струйные принтеры, высокое – лазерные
принтеры);
- разрешение печати в dpi (струйные: 600 - 720; лазерные 600-1200);
- цена.
Дополнительные поля класса «Лазерные принтеры»:
– цвет печати (монохромная, цветная);
- максимальный формат листа (А4, А1);
- физические носители (обычная и фотобумага, пленка, открытка, конверт
и т.д.);
- ресурс картриджа (1000 – 4000 отпечатков).
Дополнительные поля класса «Струйные принтеры»:
– размер лотка (от 50 до 250 листов);
- скорость печати.
Вариант № 31
Базовый класс – «Канцтовары», производные классы «Бумага», «Карандаши», «Фломастеры».
Поля базового класса:
– название;
– цена.
Дополнительные поля класса «Бумага»:
– формат (А4, А5, А1);
- количество листов (250, 500 и т.д.);
- марка (А, В, С);
- белизна в % (125, 146 и т.д.).
Дополнительные поля класса «Карандаши»:
– мягкость или твердость (возможные значения - Т, М, ТМ);
– цвет.
Дополнительные поля класса «Фломастеры»:
– количество цветов;
- назначение (для бумаги, для доски).
Вариант № 32
Базовый класс – «Кухонные приборы», производные классы «Блендеры»,
«Мясорубки», «Пароварки».
Поля базового класса:
– название;
133

- производитель;
– цена.
Дополнительные поля класса «Блендеры»:
– тип (погружной, стационарный);
- цвет (белый, серый и т.д.);
- материал корпуса (пластик, металл);
- максимальная мощность (300 Вт, 750 Вт).
Дополнительные поля класса «Мясорубки»:
– производительность кг/мин.;
- количество дисков для фарша (2, 4);
- максимальное время непрерывной работы в мин. (15, 20, 30).
Дополнительные поля класса «Пароварки»:
– общий объем в л;
- таймер в мин. (30, 60);
- количество ярусов (2, 3).
Вариант № 33
Базовый класс – «Бытовая техника», производные классы «Газовая плита», «Холодильник», «Пылесос».
Поля базового класса:
– название;
– цена;
- производитель;
- количество на складе.
Дополнительные поля класса «Газовая плита»:
– цвет (белый, коричневый);
- количество конфорок (2, 4);
- объем духовки в л (например, 52, 60);
- вид газа (природный, сжиженный).
Дополнительные поля класса «Холодильник»:
– объем холодильной камеры в л (220, 330, 440);
– объем морозильной камеры (78, 85, 90);
- количество полок (3, 4).
Дополнительные поля класса «Пылесос»:
– потребляемая мощность (1700-2000 Вт);
- мощность всасывания (300-350 Вт).
Вариант № 34
Базовый класс – «Каменные строительные материалы», производные
классы «Песок», «Гравий», «Щебень».
Поля базового класса:
– название;
– цена;
- вид (тяжелые – более 1800 кг/м3, легкие – от 1800 до 1200 кг/м3, особо
134

легкие - менее 1200 кг/м3).
Дополнительные поля класса «Песок»:
– модуль крупности (крупный, средний, мелкий);
- плотность песка (1300-1500 кг/м3).
Дополнительные поля класса «Гравий»:
– плотность гравия (2.6 – 2.7 т/м3);
– объемный вес (1200-1600 кг/м3);
- форма зерен (округлая, угловатая).
Дополнительные поля класса «Щебень»:
– прочность (высокопрочный, прочный, средней прочности);
- происхождение (гранитный, гравийный, известняковый, вторичный).
Вариант № 35
Базовый класс – «Деревянные строительные материалы», производные
классы «Фанера», «ДСП», «ДВП».
Поля базового класса:
– название;
– цена;
- производитель.
Дополнительные поля класса «Фанера»:
– толщина в мм;
- твердость в МПа (9-30);
- звукоизоляция в Дб (6.5 – 30).
Дополнительные поля класса «ДСП»:
– плотность ДСП (0,5 – 1,0 г/см3);
- набухание в воде (5 – 30 %);
- влажность (5-12%).
Дополнительные поля класса «ДВП»:
- длина (от 1220 до 3000 мм);
- ширина (от 1220 до 1700 мм);
- толщина (от 2.5 до 40 мм);
- плотность (от 250 до 1100 кг/м3).
Вариант № 36
Базовый класс – «Чай», производные классы «В упаковке», «В пакетиках».
Поля базового класса:
– название;
- тип (краснодарский, грузинский, китайский, цейлонский);
– цена;
- производитель;
- масса нетто в г (например, 50, 100, 150).
Дополнительные поля класса «В упаковке»:
– вид (листовой, гранулированный);
- добавка (нет, цветочная, фруктовая).
135

Дополнительные поля класса «В пакетиках»:
– количество пакетиков;
- вес пакетика в г (2, 3 или 5).
Вариант № 37
Базовый класс – «Печатная продукция», производные классы «Газеты»,
«Журналы».
Поля базового класса:
– название;
- издательство;
- периодичность издания;
- адрес редакции;
- главный редактор;
- розничная цена.
Дополнительные поля класса «Газеты»:
– подписной индекс;
- учредитель.
Дополнительные поля класса «Журналы»:
– направление (научно-технический, научно-практический, литератур-
ный, исторический и т.д.);
- номер;
- год издания.
Вариант № 38
Базовый класс – «Принтеры», производные классы «Струйные», «Лазерные».
Поля базового класса:
– название;
- производитель (например, Canon, Epson, HP);
- скорость печати;
- разрешение печати в dpi (струйные: 600 - 720; лазерные 600-1200);
- цена.
Дополнительные поля класса «Струйные»:
– размер лотка (от 50 до 250 листов);
- качество печати (хорошее, высокое).
Дополнительные поля класса «Лазерные»:
– цвет печати (монохромная, цветная);
- максимальный формат листа (А4, А1);
- физические носители (обычная и фотобумага, пленка, открытка, конверт
и т.д.);
- ресурс картриджа (1000 – 4000 отпечатков).
Вариант № 39
Базовый класс – «Кабели», производные классы «Витая пара», «Оптоволокно».
Поля базового класса:
136

– название;
- тип кабеля (например, витая пара, оптоволокно);
- вид типа кабеля (для витой пары – неэкранированная, экранированная;
для оптоволокна: одномодовое, многомодовое);
- длина сегмента в м (для витой пары – 100; для оптоволокна – одномодо-
вое - 1000, многомодовое - 2000);
- количество узлов на одном сегменте (для витой пары – 2; для оптово-
локна – 2);
- цена.
Дополнительные поля класса «Витая пара»:
– категория (5Е, 6Е, 7Е, 8Е);
- варианты экранирования (FTP – один общий экран, U/FTP - экранирова-
ние каждой пары отдельно, S/FTP – экранирование каждой пары отдельно и дополнительно общий экран).
Дополнительные поля класса «Оптоволокно»:
– вид жилы (стеклянная или пластмассовая);
- диаметр жилы (одномодовый кабель – 7-10 микрон; многомодовый – 50
микрон (европейский стандарт), 62,5 микрон (стандарт Северной Америки и
Японии));
- сфера применения (магистральный, зоновый, городской, полевой);
- способ монтажа (в земле, в канализации, в воде, по воздуху).
Вариант № 40
Базовый класс – «Сетевое оборудование», производные классы «Комму-
таторы», «Маршрутизаторы».
Поля базового класса:
– название;
- производитель;
- цена.
Дополнительные поля класса «Коммутаторы»:
– скорость фильтрации кадров (количество кадров в секунду);
- скорость продвижения кадров (количество кадров в секунду);
- максимальная длина кадра (например, 100-1500 байт);
- пропускная способность (5-10 Мб/с);
- задержка передачи кадра (от 10-40 мкс до 500 мкс).
Дополнительные поля класса «Маршрутизаторы»:
- перечень поддерживаемых сетевых протоколов (IP, CONS, CLNS OSI,
IPX и т.д.);
- перечень протоколов маршрутизации (IP RIP, IPX RIP, NLSP и т.д.);
- сетевые стандарты (Ethernet, Token Ring, FDDI, Fast Ethernet, Gigabit
Ethernet, ATM и т.
д.);
- общая производительность маршрутизатора в пакетах в секунду (от 10
тыс. пак. /сек до 10 млн пак. / сек);
- внутренние протоколы маршрутизации (GGP, RIP, OSPF и т.д.);
- внешние протоколы маршрутизации (EGP, BGP).
137

ЛАБОРАТОРНАЯ РАБОТА № 9
Поле
Пояснение
value_type
Тип элемента контейнера
size_type
Тип индексов, счетчиков элементов и т.д.
iterator
Итератор
const_iterator
Константный итератор
reverse_iterator
Обратный итератор
const_reverse_iterator
Константный обратный итератор
reference
Ссылка на элемент
РАБОТА С КОНТЕЙНЕРНЫМИ КЛАССАМИ И МОДУЛЯМИ
9.1. Общие сведения о контейнерных классах и векторах
Цель лабораторной работы–- освоение технологий работы с контейнер-
ными классами и модулями.
Контейнерные классы – это классы, предназначенные для хранения данных, организованных определенным образом. Для каждого типа контейнера
определены методы для работы с его элементами, не зависящие от конкретного
типа данных элементов контейнера. Таким образом, один и тот же вид контейнера можно использовать для хранения данных различных типов.
К контейнерам, которые работают в программе с основными структурами
данных, можно отнести векторы, двусторонние очереди, списки и их разновидности, словари и множества.
Контейнеры можно разделить на два типа: последовательные и ассоциативные.
Последовательные контейнеры обеспечивают хранение конечного коли-
чества однотипных величин в виде непрерывной последовательности. К ним
относятся векторы (vector), двусторонние очереди (deque) и списки (list), а также так называемые адаптеры, то есть варианты, контейнеров – стеки (stack),
очереди (queue) и очереди с приоритетами (priority_queue).
Ассоциативные контейнеры обеспечивают быстрый доступ к данным по
ключу. Эти контейнеры построены на основе сбалансированных деревьев. Существует пять типов ассоциативных контейнеров: словари (map), словари с
дубликатами (multimap), множества (set), множества с дубликатами (multiset) и
битовые множества (bitset).
Контейнерные классы обеспечивают стандартизованный интерфейс при
их использовании. Смысл одноименных операций для различных контейнеров
одинаков, основные операции применимы ко всем типам контейнеров.
Практически в любом контейнерном классе определены поля типов, при-
веденных в табл. 10.
Таблица 10
Поля контейнеров
138

Окончание табл. 10
Поле
Пояснение
const_reference
Константная ссылка на элемент
key_type
Тип ключа (для ассоциативных контейнеров)
key_compare
Тип критерия сравнения
Метод
Пояснение
iterator begin(), const_iterator begin()
const
Указывают на первый элемент
iterator end(), const_iterator end() const
Указывают на последний элемент
reverse_iterator rbegin(),
const_reverse_iterator rbegin() const
Указывают на первый элемент в обратной последовательности
reverse_iterator rend(),
Указывают на элемент, следующий
тельности
Метод
Пояснение
size()
Число элементов
max_size()
Максимальный размер контейнера
empty()
Булевская функция, показывающая, пуст ли
Итератор является аналогом указателя на элемент. Он используется для
просмотра контейнера в прямом или обратном направлении. Итератора должен
уметь ссылаться на элемент контейнера и реализовывать операцию перехода к
его следующему элементу.
Для итераторов определены следующие методы, приведенные в табл. 11.
Таблица 11
Методы итераторов
const_reverse_iterator rend() const
за последним, в обратной последова-
Во всех контейнерах определены методы, позволяющие получить сведения
о размере контейнеров. Список методов указан в табл. 12.
Таблица 12
Методы для получения сведений о размере контейнеров
контейнер
139

Примеры создания векторов:
//Создается вектор из 10 равных единице элементов
vector <int> v2 (10, 1);
//Создается вектор, равный вектору v1:
vector <int> v4(v1);
//Создается вектор из двух элементов,
//равных первым двум элементам v1
vector <int> v3(v1.begin(), v1.begin()+2);
//Создается вектор из 10 объектов класса Train
//Работает конструктор по умолчанию
vector <Train> t1(10);
Определены следующие методы для изменения объектов класса vector.
void push_back(const T& value);
Функция push_back добавляет элементы в конец вектора.
void pop_back();
Функция pop_back удаляет элементы из конца вектора.
iterator insert(iterator position, const T& value);
void insert(iterator position, size_type n, const T& value);
template <class InputIter> void insert(iterator position, InputIter first, InputIter
last);
Функция insert служит для вставки элемента в вектор. Первая форма
функции вставляет элемент value в позицию, заданную первым параметром
(итератором), и возвращает итератор, ссылающийся на вставленный элемент.
Вторая форма функции вставляет в вектор n одинаковых элементов. Третья
форма функции позволяет вставить несколько элементов, которые могут быть
заданы любым диапазоном элементов подходящего типа, например:
vector <int> v(2), v1(3,9);
int m[3] = {3, 4, 5};
v.insert(v.begin(), m, m+3); // Содержимое v: 3 4 5 0 0
v1.insert(v1.begin() + 1, v.begin(), v.begin() + 2);
//Содержимое v1: 9 3 4 9 9
Функция erase служит для удаления одного элемента вектора (первая форма
функции) или диапазона, заданного с помощью итераторов (вторая форма):
vector <int> v;
for (int i = 1; i<6; i++) v.push_back(i);
//Содержимое v: 1 2 3 4 5
140
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
