Требования по выполнению лабораторных работ
В ходе выполнения ЛР студент должен написать программный код на ЯП C++, выполняющий задание на ЛР. Далее подробно описаны требования по выполнению каждой этапа ЛР.
1.1 Программный код
В ходе выполнения ЛР для получения зачета студент обязан написать программный код, выполняющий задание на ЛР. К программному коду предъявляются следующие требования:
1) переменные должны объявляться и инициализироваться по мере их надобности;
2) именование переменных должно быть осмысленным;
3) одну треть кода программы должны составлять комментарии;
4) код должен быть аккуратно оформлен (отступы, "лесенка" и т.д.);
5) код не должен использовать операторов break, continue и go to;
6) код должен производить форматированный вывод результатов;
7) код должен запрашивать пользователя входные данные;
8) код должен иметь базовый уровень проверки входных данных;
9) программа должна позволять повторный запуск алгоритма при положительном ответе пользователя на запрос о повторном выполнении.
Лабораторная работа №1
Задание на ЛР 1
1. Реализовать одно консольное приложение с функциональностью согласно вариантам.
Особенности:
- алгоритм должен быть реализован без использования функций из специальных библиотек;
- для задания массива не допускается использование статических массивов и шаблона класса vector;
- при вводе неправильного входного значения программа должна повторно его запрашивать.
Варианты для второго пункта задания приведены в таблице 2.1.
Таблица 2.1 - Варианты задания на ЛР № 1
|
Вариант 1
|
Циклический сдвиг элементов массива на k позиций влево. Входные данные: размер массива и массив. Выходные данные: обработанный массив.
|
|
Вариант 2
|
Не используя других массивов, переставить элементы целочисленного массива в обратном порядке. Входные данные: размер массива и массив. Выходные данные: обработанный массив.
|
|
Вариант 3
|
Не используя дополнительный массивов, "сожмите" массив, содержащий нулевые элементы, передвинув нулевые элементы в конец массива. Входные данные: размер массива и массив. Выходные данные: обработанный массив.
|
|
Вариант 4
|
Не используя дополнительный массивов, "сожмите" массив заменив каждый k-ый элемент на 0, передвинув нулевые элементы в конец массива. Входные данные: k, размер массива и массив. Выходные данные: обработанный массив.
|
|
Вариант 5*
|
Замените на ноль значения всех элементов двумерного массива, расположенных на главной и на побочной диагоналях. Входные данные: размеры массива и массив. Выходные данные: обработанный массив.
|
|
Вариант 6
|
Подсчитать число элементов, больших среднего значения всех элементов массива. Входные данные: размер массива и массив. Выходные данные: число элементов, удовлетворяющих условию задачи.
|
|
Вариант 7*
|
Подсчитать количество различных значений в массиве. Входные данные: размер массива и массив. Выходные данные: число элементов, удовлетворяющих условию задачи.
|
|
Вариант 8
|
Подсчитать количество вхождений числа k в массиве. Входные данные: k, размер массива и массив. Выходные данные: число вхождений.
|
|
Вариант 9**
|
Подсчитать количество вхождений подмассива в массив. Входные данные: размер массива, массив, размер подмассива и подмассив. Выходные данные: число вхождений.
|
|
Вариант 10*
|
Найти координаты "седловой точки" двумерного массива. Входные данные: размеры массива и массив. Выходные данные: координаты.
|
|
Вариант 11**
|
Транспонирование матрицы без дополнительных массивов. Входные данные: размеры матрицы и матрица. Выходные данные: транспонированная матрица.
|
|
Вариант 12*
|
За один проход двумерного массива найти максимальное и минимальное значения. Входные данные: размеры матрицы и матрица. Выходные данные: минимальное и максимальное значения.
|
|
Вариант 13*
|
Подсчитать количество вхождений каждого элемента подмассива в массив. Входные данные: размер массива, массив, размер подмассива и подмассив. Выходные данные: массив вхождений.
|
|
Вариант 14*
|
Найти наиболее часто встречающийся элемент массива. Входные данные: размер массива и массив. Выходные данные: элемент и количество вхождений.
|
|
Вариант 15**
|
Найти элементы подмассива, которые не встречаются в массиве. Входные данные: размер массива и массив. Выходные данные: массив элементов подмассива, отсутствующих в основном массиве.
|
|
Вариант 16
|
Посчитать количество четных и нечетных чисел в целочисленном массиве. Входные данные: размер массива и массив. Выходные данные: количество четных и нечетных чисел.
|
|
Вариант 17
|
Рассчитать след матрицы и заменить все ее элементы, которые меньше этого значения на -1. Входные данные: размеры массива и массив. Выходные данные: обработанный массив.
|
|
Вариант 18*
|
Сдвинуть элементы массива, чьи индексы соответствуют значениям последовательности Фибоначчи в конец массива. Входные данные: размеры массива и массив. Выходные данные: обработанный массив.
|
Лабораторная работа №2
Задание на ЛР 2
Реализовать консольное приложение, предназначенное для приближённого вычисления суммы бесконечного числового ряда подряд (без повторного запуска алгоритма суммирования), выбранного согласно номеру варианта. Входные данные: параметр x и параметр α, характеризующий точность вычисления ряда. Выходные данные: последовательность итераций, а точнее номер итерации (n), текущий член ряда (an), текущая частичная сумма (Sn), погрешность вычисления заданной текущей частичной суммы (αn).
Особенности:
- необходимо учесть два возможных варианта значений параметра α: точность вычислений (положительное значение с плавающей точкой) или число слагаемых ряда для суммирования (целочисленное положительное значение);
- данные выводятся после каждой итерации, т.о. данные будут выводиться столько раз, сколько членов ряда было просуммировано;
- каждая итерация выводится с новой строки, при выводе используются краткие обозначения переменных;
- если значение x совпадает с предыдущим, повторное вычисление рассчитанных ранее членов ряда и частичных сумм не производится, а заимствуется из предыдущего расчета.
- при вводе неправильного входного значения программа должна повторно его запрашивать;
- для вариантов 4, 8, 9, 16 оценку точности осуществлять для самого ряда а не для итогового выражения S.Варианты приведены в таблице 3.1.
Таблица 3.1 - Варианты задания на ЛР № 2


Лабораторная работа №3
Задание на ЛР 3
Написать консольное приложение, предназначенное для сортировки целочисленного вектора стандартными средствами и собственной функцией, реализующей алгоритм сортировки согласно варианту. Входные данные: количество элементов, способ ввода входного вектора, вектор (при ручном вводе). Выходные данные: отсортированные массивы (стандартными средствами и собственная реализация), время работы библиотечной и реализованной функций сортировок, ускорение библиотечной сортировки.
Особенности:
- должна присутствовать возможность выбора исходного (сортируемого) вектора: вводимый с клавиатуры или генерируемый согласно варианту (два возможных для выбора типа генерируемых данных — третий столбец таблицы 4.1);
- в случае, если число элементов вектора менее некоторого разумного значения, исходный и отсортированные двумя методами векторы должны выводиться на экран для сравнения и проверки правильности результатов сортировки;
- в случае, если число элементов вектора более некоторого разумного значения, должны выводиться на экран для сравнения и проверки правильности результатов сортировки некоторое количество элементов исходного и отсортированных двумя методами векторов.
Варианты приведены в таблице 4.1.
Таблица 4.1 Варианты задания на ЛР № 3
|
Вариант 1
|
Сортировка вставками, быстрая сортировка
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 2
|
Сортировка вставками, сортировка слиянием
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 3
|
Сортировка вставками, пирамидальная сортировка
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 4
|
Сортировка выбором, быстрая сортировка
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 5
|
Сортировка выбором, сортировка слиянием
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 6
|
Сортировка выбором, пирамидальная сортировка
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 7
|
Сортировка пузырьком, быстрая сортировка
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 8
|
Сортировка пузырьком, сортировка слиянием
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 9
|
Сортировка пузырьком, пирамидальная сортировка
|
Строго случайные данные и «почти отсортированные» случайные данные
|
|
Вариант 10
|
Сортировка вставками, сортировка Шелла
|
Строго случайные данные и «отсортированные наоборот» случайные данные
|
|
Вариант 11
|
Сортировка выбором, сортировка Шелла
|
Строго случайные данные и «отсортированные наоборот» случайные данные
|
|
Вариант 12
|
Сортировка пузырьком, сортировка Шелла
|
Строго случайные данные и «отсортированные наоборот» случайные данные
|
|
Вариант 13
|
Сортировка Шелла, быстрая сортировка
|
Строго случайные данные и «отсортированные наоборот» случайные данные
|
|
Вариант 14
|
Сортировка Шелла, сортировка слиянием
|
Строго случайные данные и «отсортированные наоборот» случайные данные
|
|
Вариант 15
|
Сортировка Шелла, пирамидальная сортировка
|
Строго случайные данные и «отсортированные наоборот» случайные данные
|
|
Вариант 16
|
Сортировка слиянием и быстрая сортировка с разделением на 3 части
|
Строго случайные данные и случайные данные с малым числом уникальных значений
|
|
Вариант 17
|
Пирамидальная сортировка и быстрая сортировка с разделением на 3 части
|
Строго случайные данные и случайные данные с малым числом уникальных значений
|
|
Вариант 18
|
Быстрая сортировка и быстрая сортировка с разделением на 3 части
|
Строго случайные данные и случайные данные с малым числом уникальных значений
|
Лабораторная работа №4
Задание на ЛР 4
Реализовать одно консольное приложение с функциональностью согласно вариантам.
Особенности:
- входные данные должны извлекаться из файла;
- выходные данные должны помещаться в файл.
Варианты задания приведены в таблице 5.2.
Таблица 5.2 - Варианты основного задания на ЛР № 3
|
Вариант 1
|
В строке удалить пробелы между первым и вторым вопросительным знаком. Входные данные: строка. Выходные данные: строка.
|
|
Вариант 2
|
Перевести десятичное число в данную систему счисления. Входные данные: число в формате строки и система счисления. Выходные данные: число в формате строки.
|
|
Вариант 3*
|
В матрице из букв найти заданное слово. Входные данные: матрица символов. Выходные данные: индексы начала слова и его расположение. Особенности: слово может располагаться и по вертикали, и по горизонтали.
|
|
Вариант 4*
|
Вывести слова строки в обратном порядке. Входные данные: строка. Выходные данные: строка.
|
|
Вариант 5
|
Отсортировать массив строк по алфавиту. Входные данные: массив строк. Выходные данные: массив строк. Особенности: учитывать только первый символ.
|
|
Вариант 6
|
Заменить пробел и группы пробелов символом "*". Входные данные: строка. Выходные данные: строка.
|
|
Вариант 7*
|
Заменить в самом длинном слове строки буквы 'a' на 'b'. Входные данные: строка. Выходные данные: строка.
|
|
Вариант 8
|
Определить длину самого короткого слова в строке. Входные данные: строка. Выходные данные: длина слова.
|
|
Вариант 9*
|
Заменить три последних символа у слов, больших определенной длины. Входные данные: строка и длина слова. Выходные данные: строка.
|
|
Вариант 10
|
Посчитать процентное соотношение строчных и прописных букв. Входные данные: строка. Выходные данные: соотношение.
|
|
Вариант 11*
|
Удалить из строки слово заданной длины. Входные данные: строка и длина слова. Выходные данные: строка.
|
|
Вариант 12
|
Определить частоту встречаемости символа в строке. Входные данные: строка и символ. Выходные данные: частота встречаемости.
|
|
Вариант 13*
|
Определить, является ли строка палиндромом. Входные данные: строка и символ. Выходные данные: заключение о принадлежности палиндрому.
|
|
Вариант 14*
|
Замена подстроки в строке. Входные данные: исходная строка, строка, которую нужно заменить, и строка для вставки. Выходные данные: строка.
|
|
Вариант 15
|
Вывести строки из массива строк, в которых заданное слово отсутствует. Входные данные: массив строк и заданное слово. Выходные данные: строки с заданным словом.
|
|
Вариант 16
|
Отфильтровать строку от чисел. Входные данные: строка. Выходные данные: строка без чисел и массив чисел.
|
|
Вариант 17*
|
Заменить первый символ у слов, меньших определенной длины. Входные данные: строка и длина слова. Выходные данные: строка.
|
|
Вариант 18
|
Вывести строки из массива строк, в которых содержится заданное слово. Входные данные: массив строк и заданное слово. Выходные данные: строки с заданным словом.
|
Лабораторная работа №5
Задание на ЛР 5
Реализовать консольное приложение, предназначенное для работы с массивом экземпляров класса, который имеет в качестве переменной класса объект другого класса. Входные данные: количество элементов массива, экземпляры класса. Выходные данные: массив экземпляров класса и массив результатов работы метода по обработке данных.
Особенности:
- у классов должны быть перегружены операторы взятия из потока и помещения в поток;
- должна быть создана функция-член класса, реализующая обработку данных экземпляра класса согласно варианту;
- должна быть реализована возможность выбора чтения из файла или с консоли;
- должна быть реализована возможность выбора записи в файла или вывода в консоль.
Варианты задания приведены в таблице 6.1.
Таблица 6.1 - Варианты основного задания на ЛР № 5
|
№
|
Классы
|
Формат
|
Пример
|
Обработка
|
|
1
|
Данные о температуре
|
Номер измерения Значение Единица измерения
|
1 36.6 C
|
|
|
Данные о пациенте
|
ФИО
Возраст
Данные о температуре
|
Petrov I.I.
18
1 39.6 C
|
Расчет дозировки жаропонижающего в зависимости от возраста и температуры
|
|
2
|
Данные об оценках
|
Фамилия Оценка1 Оценка2 Оценка3
|
Ivanov 3 4 5
|
Вывод средней оценки
|
|
Данные о группе
|
Номер группы
Количество студентов
Данные об оценках
|
6101
2
Ivanov
3 4 5
Petrov 5 5 5
|
Определение средней успеваемости по группе
|
|
3
|
Информация о перемещении лифта
|
Время(чч:мм) Этаж вызова Этаж назначения
|
20:30 1 9
|
Вывод числа пройденных этажей
|
|
Данные ЖКХ
|
Модель
Количество перемещений за день
Массив с перемещениями
|
LP201
2
20:30 1 9
21:00 9 6
|
Расчет количества пройденных этажей за день
|
|
4
|
Многоугольник
|
Число сторон Длины сторон
|
4 1 2 3 5.5
|
Вывод периметра многоугольника
|
|
Данные о межевании
|
Название нас. пункта
Количество участков
Многоугольники
|
Новосемейкино
3
4 1 2 3 5.5
|
Вывод длины заборов
|
|
5
|
Данные о скорости
|
Номер измерения Скорость Единица измерения
|
2 60 km/h
|
Вывод скорости в км/ч и м/с
|
|
Данные о гонщиках
|
ФИО
Количество измерений
Данные о скорости
|
Petrov I.I.
2
1 60 km/h
2 40 m/h
|
Определение лучшего круга
|
|
6
|
Данные о давлении в шинах
|
Дата(дд.мм) Давление1 Давление 2 Давление3 Давление4
|
29.04 2 2 2.1 2.05
|
Вывод среднего давления
|
|
Данные об автомобиле
|
Марка
Номер
Данные о давлении
|
BMW
К256ТН 163рус
29.04
2 2 2.1 2.05
|
Вывод среднего давления
|
|
7
|
Информация о рейсе электрички
|
Пункт отправления Время (чч:мм) Пункт прибытия Время (чч:мм)
|
МСК 08:22 СПг 10:56
|
Вывод времени в пути
|
|
Расписание поездов
|
Дата
Количество рейсов
Информация о рейсе
|
26.04
2
МСК 08:22 СПг 10:56
СМР 06:30 СЫЗ 07:56
|
Пункты назначения самого короткого рейса
|
|
8
|
Курс валюты
|
Дата Валюта Курс
|
25.04 USD 35.6830
|
Перевод из рублей в указанную валюту
|
|
Данные о закупках
|
Номер договора
Сумма договора в валюте
Курс валюты
|
12
3600
25.04
USD
35.6830
|
Сумма покупки в рублях
|
|
9
|
Данные о времени работы
|
Дата (дд.мм) Время прихода (чч:мм) Время ухода (чч:мм)
|
26.04 09:00 15:00
|
Вывод времени работы
|
|
Данные о работнике
|
ФИО
Ставка
Данные о времени работы
|
Petrov I.I.
120
26.04
09:00
15:00
|
Расчет зарплаты
|
|
10
|
Данные о прибыли
|
Номер филиала
Число дней
Прибыль
|
1 5 100 78.5 1000 0 1000
|
Вывод числа дней, когда 0 прибыли
|
|
Данные о компании
|
Название компании
Количество филиалов
Данные о прибыли филиалов
|
StroyDom
2
1 2 200 400
2 200 0
|
Определение номера филиала с максимальной выручкой
|
|
11
|
Данные о разговорах
|
Число разговоров
Время разговоров (с)
|
3 10 25 60
|
Вывод числа полных минут в каждом из разговоров
|
|
Данные об абоненте
|
ФИО
Тарифная ставка
Данные о разговорах
|
Petrov I.I.
2 15 75
|
Расчет стоимости обслуживания согласно тарифа и звонков
|
|