![](/user_photo/2706_HbeT2.jpg)
- •I. ПРОЦЕДУРНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Линейные алгоритмы
- •Лабораторная работа № 2 Циклы и ветвления
- •Лабораторная работа № 3 Одномерные массивы и строки
- •Лабораторная работа № 4 Двумерные массивы и матрицы
- •Лабораторная работа № 5 Функции
- •Лабораторная работа № 6 Определение типов данных. Перечисляемый тип. Структуры
- •II. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Понятие класса. Инкапсуляция
- •Лабораторная работа № 2 Организация и обработка списков
- •Лабораторная работа № 3 Наследование. Полиморфизм
- •Лабораторная работа № 4 Перегрузка функций и операций
- •Лабораторная работа № 5 Файловые функции. Работа с файлами
- •III. ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
- •Лабораторная работа № 1 Современный С++
- •Лабораторная работа № 2 Стандартная библиотека шаблонов С++
- •Лабораторная работа № 3 Визуальная библиотека VCL
- •Лабораторная работа № 4 Графические средства
- •Лабораторная работа № 5 Доступ к базам данных
- •Лабораторная работа № 6 Модульное программирование
- •IV. Оформление отчётов
- •Структура отчёта по лабораторной работе
- •Требования к структурным элементам отчёта
- •Правила оформления отчёта
- •ЛИТЕРАТУРА
Лабораторная работа № 2 Стандартная библиотека шаблонов С++
Лабораторная работа посвящена понятию шаблонов в языке С++ и их использованию в стандартной библиотеке. Рассматриваются классы коллекций и некоторые другие.
274
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh273x1.jpg)
ОБРАЗЕЦ ОТЧЁТА ПО ЛАБОРАТОРНОЙ РАБОТЕ
275
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh274x1.jpg)
276
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh275x1.jpg)
277
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh276x1.jpg)
278
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh277x1.jpg)
279
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh278x1.jpg)
280
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh279x1.jpg)
281
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh280x1.jpg)
282
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh281x1.jpg)
283
![](/html/2706/124/html_Beg3BLg6vG.uvfE/htmlconvd-9URjHh282x1.jpg)
284
Задачи
1.Напишите программу, подсчитывающую частоту появления различных слогов в тексте на русском языке.
2.Реализуйте набор основных статистических функций (среднее арифметическое, наибольшее значение, наименьшее значение, сумма всех значений) для вектора вещественных чисел.
3.Реализуйте аналог класса std::string с помощью vector.
4.Напишите программу для вывода на экран календаря на месяц, задаваемый пользователем.
5.Напишите программу для расстановки на шахматном поле восьми ферзей таким образом, чтобы они не били друг друга. Задача имеет более одного решения.
6.Напишите программу для подсчёта значения полинома, заданного как ряд пар коэффициентов и показателей степени. Для хранения исходных данных используйте класс list.
7.Опишите ассоциативный массив с целым ключом на основе класса vector. Сравните быстродействие Вашей реализации с быстродействием стандартного класса map.
8.Напишите программу контроля успеваемости студентов по номеру зачётки.
9.Опишите на основе ассоциативного массива класс, полностью имитирующий поведение (программный интерфейс) стандартного класса vector. Сравните быстродействие Вашей реализации с быстродействием vector.
10.Реализуйте функцию поиска заданного значения в векторе на основе произвольного алгоритма. Сравните быстродействие Вашей функции с быстродействием std::find().
11.Реализуйте функцию поиска заданного значения в списке на основе произвольного алгоритма. Сравните быстродействие Вашей функции с
285
быстродействием std::find().
12.Реализуйте функцию сортировки вектора на основе произвольного алгоритма. Сравните быстродействие Вашей функции с быстродействием std::sort().
13.Реализуйте функцию сортировки списка на основе произвольного алгоритма. Сравните быстродействие Вашей функции с быстродействием std::sort().
14.Реализуйте функцию поиска заданного простого числа с помощью «решета» Эратосфена с использованием вектора.
15.Реализуйте функцию поиска заданного простого числа с помощью «решета» Эратосфена с использованием списка.
16.Реализуйте функцию поиска заданного простого числа с помощью «решета» Эратосфена с использованием ассоциативного массива.
17.Напишите программу для определения частоты появления букв в русском языке на основе анализа текстового файла, заданного пользователем. Результаты вывести в файл в виде таблицы.
18.1. Напишите программу для подсчёта значения полинома, заданного как ряд пар коэффициентов и показателей степени. Для хранения исходных данных используйте класс vector.
19.2. Напишите программу для подсчёта значения полинома, заданного как ряд пар коэффициентов и показателей степени. Для хранения исходных данных используйте класс list.
20.3. Напишите программу для подсчёта значения полинома, заданного как ряд пар коэффициентов и показателей степени. Для хранения исходных данных используйте класс map.
21.Реализуйте функцию умножения двух матриц одинаковой размерности.
22.Реализуйте список указателей, уничтожающий (delete) объект, на который указывает элемент списка во время уничтожения всего списка или при удалении элемента из списка операцией remove().
23.Напишите программу, которая считывает строку и распечатывает её в
286
обратной последовательности. Используйте класс vector.
24.Напишите программу, которая считывает строку и распечатывает её в обратной последовательности. Используйте класс list.
25.Напишите программу, которая считывает строку и распечатывает её в обратной последовательности. Используйте класс map.
26.Палиндромом называется строка (в общем случае - последовательность значений), которая читается одинаково в прямом и обратном порядке, например «казак», «боб», «дед». Напишите программу для проверки, является ли строка палиндромом. Используйте класс stack.
27.Реализуйте операцию объединения множеств с помощью операции пересечения.
28.Реализуйте набор основных статистических функций (среднее арифметическое, наибольшее значение, наименьшее значение, сумма всех значений) для множества вещественных чисел.
29.Реализуйте функцию выбора из множества строк: а) слов, содержащих один слог; б) слов, содержащих более одного слога.
30.Реализуйте функцию сложения двух векторов одинаковой длины. Результатом её работы должен являться третий вектор, элементы которого получаются сложением элементов исходных векторов.
31.Реализуйте функцию, печатающую ключи ассоциативного массива по возрастанию ассоциированных с ними значений. Функция должна просматривать элементы массива не более одного раза.
32.Реализуйте функцию выбора из множества целых чисел: а) только чётных; б) только нечётных; в) без остатка делящихся на 11.
33.Реализуйте функцию проверки баланса скобок в тексте на языке C++. Функция должна проверять соответствие открывающих и закрывающих скобок (), [], {}. Предположим, что комментарии, директивы препроцессора и переменные строкового и символьного типа в тексте программы отсутствуют. Используйте класс stack.
34.Опишите классы ассоциативных массивов с внутренним представлением
287
на основе вектора, списка и множества. Сравните их быстродействие.
35.Напишите программу игры «Ханойские башни». На первый из трёх стержней надета пирамида из n дисков (большие снизу, меньшие сверху). Требуется переместить все диски на другой стержень так, чтобы за одну операцию перемещалось не более одного диска, и больший диск всегда оказывался ниже меньшего. Используйте класс stack.
288