Добавил:
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
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК

return true;
}
else
return false;
}
//Реализация метода печати элементов списка в виде таблицы
void List::print() {
//Печать шапки таблицы
cout << "\n Список поездов \n";
hline();
cout << "| Номер | Пункт назначения | Время отправления |" << endl;
hline();
//Печать элементов списка
Train* pv = pbeg;
while (pv) {
cout << "| " << setw(5) << pv->get_train_num();
cout << " | " << setw(18) << pv->get_p_nazn();
cout << " | " << setw(19) << pv->get_v_otpr() << " |" << endl;
pv = pv->get_next();
}
hline();
}
//Реализация метода вывода горизонтальной линии в таблице
void List::hline() {
const int m = 52;
for (int i = 0; i < m; i++)
cout << "-";
cout << endl;
}
//Реализация деструктора
List::~List() {
if (pbeg != 0) {
Train* pv = pbeg;
while (pv) {
pv = pv->get_next();
delete pbeg;
pbeg = pv;
}
}
}
//Функция прорисовки меню
void menu()
{
cout << "\n МЕНЮ \n";
101

cout << "1. Ввод данных" << endl;
cout << "2. Вывод данных" << endl;
cout << "3. Поиск данных" << endl;
cout << "4. Удаление" << endl;
cout << "5. Выход" << endl;
cout << "Введите номер пункта меню для дальнейшей работы" << endl;
}
//Функция реализации пользовательского ввода данных
//в список
void vvod(List* L)
{
int n;
int t_num;
string p_nazn;
string v_otpr;
cout << "Введите количество добавляемых элементов в список = ";
cin >> n;
for (int i = 0; i < n; i++)
{
cout << "Введите номер поезда" << endl;
cin >> t_num;
cout << "Введите имя пункта назначения" << endl;
while (cin.get() != '\n');
getline(cin, p_nazn);
cout << "Введите время отправления" << endl;
getline(cin, v_otpr);
L->add_sort(t_num, p_nazn, v_otpr);
}
}
//Функция реализации вывода данных из списка
void vivod(List* L) {
if (!L->is_empty())
L->print();
else
cout << endl << "Список пуст!" << endl;
}
//Функция реализации поиска данных в списке
void search(List* L) {
if (!L->is_empty())
{
int k_poisk;
//Прорисовка меню поиска
cout << "Выберите критерий поиска" << endl;
cout << "1. Поиск по номеру поезда" << endl;
102

cout << "2. Поиск по имени пункта назначения" << endl;
cout << "3. Поиск по времени отправления" << endl;
cout << "Введите номер критерия" << endl;
cin >> k_poisk;
//Обработка выбора критерия пользователем
switch (k_poisk)
{
case 1: //Поиск по номеру поезда
{
int t_num;
cout << endl << "Введите номер поезда" << endl;
cin >> t_num;
if (List::Train* pv = L->find(t_num))
{
cout << endl << "Результат поиска" << endl;
cout << setw(5) << pv->get_train_num() << setw(20)
<< pv->get_p_nazn() << setw(10) << pv->get_v_otpr() << endl;
}
else
cout << "Поезд с таким номером не найден" << endl;
}
break;
case 2: //Поиск по имени пункта назначения
{
string p_nazn;
cout << endl << "Введите имя пункта назначения" << endl;
while (cin.get() != '\n');
getline(cin, p_nazn);
cout << endl << "Результат поиска" << endl;
if (!L->find_data("p_nazn", p_nazn))
cout << "Поезда с таким пунктом назначения не найдены" << endl;
}
break;
case 3: //Поиск по времени отправления
{
string v_otpr;
cout << endl << "Введите время отправления" << endl;
while (cin.get() != '\n');
getline(cin, v_otpr);
cout << endl << "Результат поиска" << endl;
if (!L->find_data("v_otpr", v_otpr))
cout << "Поезда с таким временем отправления не найдены" << endl;
}
break;
103

default:
cout << "Неверный вариант выбора" << endl;
}
}
else
cout << endl << "Список пуст!" << endl;
}
//Функция удаления элемента из списка
void del(List* L) {
if (!L->is_empty())
{
int t_num;
cout << "Введите номер поезда для удаления" << endl;
cin >> t_num;
if (L->remove(t_num))
cout << endl << "Элемент удален" << endl;
else
cout << endl << "Элемент с таким номером поезда не найден" << endl;
}
else
cout << endl << "Список пуст!" << endl;
}
//Функция реализации выхода из программы
void vihod(List* L) {
L->~List();
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
List L;
int num = 0; //Переменная для хранения номера выбранного пункта меню
while (num != 5)
{
menu();
cin >> num;
if (num < 1 || num > 5)
cout << "Неверный вариант выбора" << endl;
else
menu_list[num - 1](&L);
}
return 0;
}
104

7.3. Задания к лабораторной работе № 7
Задание
Создать программу, формирующую данные определенной структуры в
виде двунаправленного линейного списка. Список должен являться объектом
класса. Структура данных зависит от варианта.
Программа должна реализовывать следующие операции:
– формирование меню для выбора действия пользователем;
– ввод данных в список, отсортированный по ключу;
– вывод данных из списка в виде таблицы;
– поиск элемента в списке по различным критериям (номеру поезда, име-
ни пункта назначения, времени отправления);
– удаление элемента из списка по заданному ключу.
Отчет
Отчет должен содержать титульный лист, вариант задания, текст про-
граммы с комментариями, скриншоты результатов работы программы.
Варианты заданий
1. Составить программу, которая обрабатывает информацию о таксопарке.
Сведения о такси содержат:
– номер машины (ключ);
– ФИО водителя;
– марка машины;
– стаж водителя.
2. Составить программу, которая обрабатывает информацию о пользова-
телях компьютерной сети.
Сведения о пользователе содержат:
– логин пользователя(ключ);
– дата регистрации;
– тип пользователя.
3. Составить программу, которая обрабатывает информацию о продаже
билетов на концерт.
– дата концерта (ключ);
– название исполнителя;
– количество проданных билетов.
4. Составить программу, которая обрабатывает информацию о лаборато-
риях института.
Сведения о лаборатории содержат:
– номер лаборатории (ключ);
– количество компьютеров;
– ФИО ответственного лаборанта.
105

5. Составить программу, которая обрабатывает информацию о мебельных
гарнитурах, продаваемых в магазине.
Сведения о гарнитуре содержат:
– название гарнитура (ключ);
– количество предметов;
– цена;
– наличие на складе.
6. Составить программу, которая обрабатывает информацию о заказах на
ремонт вычислительной техники.
Сведения о заказе содержат:
– номер заказа (ключ);
– ФИО заказчика;
– описание неисправности;
– стоимость ремонта.
7. Составить программу, которая обрабатывает информацию для учета
автомобильных грузоперевозок.
Сведения о грузовике содержат:
– номер грузовика (ключ);
– ФИО водителя;
– грузоподъемность.
8. Составить программу, которая обрабатывает информацию об авиаполке.
Сведения об авиаполке содержат:
– номер полка (ключ);
– ФИО командира;
– количество самолетов;
– количество боеготовых самолетов.
9. Составить программу, которая обрабатывает информацию о гостинич-
ных номерах.
Сведения о номере содержат:
– номер комнаты (ключ);
– этаж;
– вид номера;
– количество мест.
10. Составить программу, которая обрабатывает информацию о наличии
автобусов в автобусном парке.
Сведения о каждом автобусе содержат:
– номер автобуса (ключ);
– ФИО водителя;
– номер маршрута.
106

11. Составить программу, которая обрабатывает информацию о книгах в
библиотеке.
Сведения о книгах содержат:
– номер УДК (ключ);
– ФИО автора;
– название;
– год издания.
12. Составить программу, которая обрабатывает информацию о гражда-
нах, лежащих в больнице.
Сведения о больном содержат:
– номер больного (ключ)
– ФИО больного;
– диагноз;
– номер палаты.
13. Составить программу, которая обрабатывает информацию о наличии
бензина на автозаправочной станции.
Сведения о бензине содержат:
– марка бензина (ключ);
– цена за литр;
– количество литров наличии.
14. Составить программу, которая обрабатывает информацию о продажах
компьютерных игр.
Сведения о туре содержат:
– название игры (ключ);
– издатель;
– количество проданных физических копий;
– количество проданных цифровых копий.
15. Составить программу, которая обрабатывает информацию о заявках
на авиабилеты.
Каждая заявка содержит:
– номер рейса (ключ);
– пункт назначения;
– ФИО пассажира;
– желаемую дату вылета.
16. Составить программу, формирующую телефонный справочник.
Сведения об абоненте содержат:
– номер телефона (ключ);
– ФИО абонента;
– адрес абонента.
107

17. Составить программу, которая обрабатывает информацию об учебной
дисциплине.
Сведения об учебной дисциплине содержат:
– шифр дисциплины (ключ);
– название дисциплины;
– количество лекционных часов;
– количество часов на лабораторные работы.
18. Составить программу, которая обрабатывает информацию о продаже
автомобилей в автосалоне.
Сведения об автомобиле содержат:
– номер автомобиля (ключ);
– марка автомобиля;
– дата продажи;
19. Составить программу, которая обрабатывает информацию о заказе на
пошив одежды в ателье.
Сведения о заказе содержат:
– номер заказа (ключ);
– предмет одежды;
– ФИО закройщика;
– стоимость материала.
20. Составить программу, которая обрабатывает информацию о врачах,
работающих в поликлинике.
Сведения о враче содержат:
– табельный номер врача (ключ);
– ФИО врача;
– специализация;
– номер кабинета.
21. Составить программу, которая обрабатывает информацию о наличии
приборов на складе.
Сведения о приборе содержат:
– название прибора (ключ);
– тип прибора;
– цена;
– количество на складе.
22. Составить программу, которая обрабатывает информацию о продаже
путевок в туристическом агентстве.
Сведения о туре содержат:
– название тура (ключ);
– продолжительность тура;
– стоимость путевки;
– количество проданных путевок.
108

23. Составить программу, которая обрабатывает информацию об обору-
довании.
Сведения об оборудовании содержат:
– серийный номер (ключ);
– название оборудования;
– тип оборудования;
– стоимость оборудования.
24. Составить программу, которая обрабатывает информацию о файлах.
Сведения о файле содержат:
– название файла (ключ);
– тип файла;
– размер файла.
25. Составить программу, которая обрабатывает информацию о студентах.
Сведения о студенте содержат:
– номер зачетки (ключ);
– ФИО студента;
– группа.
26. Составить программу, которая обрабатывает информацию о сотруд-
никах.
Сведения о сотруднике содержат:
– табельный номер (ключ);
– ФИО сотрудника;
– должность.
27. Составить программу, которая обрабатывает информацию о счетах.
Сведения о счете содержат:
– номер счета (ключ);
– ФИО клиента;
– годовой процент.
28. Составить программу, которая обрабатывает информацию о товарах.
Сведения о товарах содержат:
– индекс товара (ключ);
– название товара;
– цена товара.
29. Составить программу, которая обрабатывает информацию о характе-
ристиках смартфонов.
Сведения о характеристиках смартфонов содержат:
– серийный номер (ключ);
– разрешение экрана, возможные значения – от 480х800 пикселей до
1920х1080 пикселей;
– диагональ экрана, возможные значения – 3,5, 5, 6 дюймов;
- цена.
109

30. Составить программу, которая обрабатывает информацию о характе-
ристиках сканеров.
Сведения о характеристиках сканеров содержат:
– серийный номер (ключ);
– оптическое разрешение, возможные значения - от 600 dpi до 1200 dpi;
– скорость сканирования (количество страниц в минуту);
- цена.
31. Составить программу, которая обрабатывает информацию о характе-
ристиках клавиатуры.
Сведения о характеристиках клавиатуры содержат:
– серийный номер (ключ);
– количество кнопок (стандартное – 105, нестандартное);
– тип клавиатуры (мембранная, механическая, слим);
- цена.
32. Составить программу, которая обрабатывает информацию о характе-
ристиках компьютерной мыши.
Сведения о характеристиках мыши содержат:
– серийный номер (ключ);
– тип (механическая, оптическая, дистанционная);
– разъем для подключения (к порту РС/2, USB-порту);
- цена.
33. Составить программу, которая обрабатывает информацию о характе-
ристиках компьютера.
Сведения о характеристиках компьютера содержат:
– серийный номер (ключ);
– тип процессора (Pentium MMX, Pentium II, Pentium III и Pentium IV);
– объем оперативной памяти;
- цена.
34. Составить программу, которая обрабатывает информацию об опера-
тивной памяти компьютера.
Сведения об оперативной памяти содержат:
– серийный номер (ключ);
– тип памяти (например, DDR3 SDRAM, DDR4 SDRAM, DDR5 SDRAM);
– тактовая частота шины (возможные значения находятся в интервале от
800 до 8400 МГц;
- цена.
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
