Оригинальный файл с заданиями: Google Docs
Здесь приведены задания для варианта №7
Задание: Ввести три целых числа. Вычислить и вывести произведение первого и второго числа
Доп: Третье число умножить на второе и поделить на первое. Вывести результат как float
Задание: Ввести 10 действительных чисел. Вывести максимальное по абсолютной величине число
Доп: Вывести все локальные максимумы введенного массива
Задание: Ввести строку, выяснить, нет ли повторяющихся слов, и вывести их, если они есть. Можно считать, что все слова имеют длину ровно 3 символа
Доп: Вывести исходную строку без тех слов, которые встречались больше 1 раза
Необходимо написать функцию и тестирующую программу, которая вводит исходные данные, вызывает функцию и выводит результат её работы
Задание: Написать функцию, которая вставляет в массив элемент с заданным индексом и заданным значением. Лишний элемент должен пропасть
Доп: Написать функцию, которая вставляет в массив 0 после максимального элемента. Размер массива должен увеличиться
Задание: Ввести строку. Вывести различные слова вместе с количеством их появления в строке
Доп: Вывести различные слова с сортировкой по алфавиту
Задание: Ввести строку. Заменить знаки препинания на сокращения (пример: тчк, зпт, впр, дтч) (можно использовать английские аналоги)
Доп: Обратное задание: сокращения заменить на символы (регистр не учитывать) (можно использовать только английские слова)
Во всех заданиях располагать узлы списка/дерева в динамической памяти Предусмотреть функции вывода на экран списка/дерева
Задание: По символьному файлу составить два линейных списка слов, упорядоченных по алфавиту и по количеству гласных букв. Вывести оба списка
Доп: Сделать управление функциями (0 - выход из цикла, 1 - удаление элемента, 2 - вставка элемента, и т.д)
В лабораторных работах второго семестра настоятельно рекомендуется использовать функции стандартной библиотеки вместо собственного кода, если это не противоречит заданию
Во всех последующих лабораторных работах необходимо разделять исходный код на 3 файла: в файле main.cpp располагается управляющая функция main, в файле my_lab.cpp (название может отличаться) ― функции в соответствии с заданием (ввод/вывод исходных данных, основная логика задания и т.п.), а в файле my_lab.h ― прототипы функций из my_lab.cpp
Далее приведены задания для варианта №6
Задание: Написать генератор псевдослучайных чисел по алгоритму f(n) = f(n-1) + f(n-2) + f(n-3) mod 211 (начальные условия: f(0) = f(1) = f(2) = 1). Подсчитать частоту каждого числа при выборке 100000
Линский: рекурсивная реализация неэффективна! Для лабы нужно уменьшить сложность (через глобальные переменные или параметры)
Задание: Сортировка вставками: пусть первые k элементов упорядочены по возрастанию. Берется (k+1)-ый элемент и размещается среди первых k так, чтобы упорядоченными оказались k+1 элементов. Этот метод применяется при k от 1 до n-1
Задание: Ввести n и числа a1, a2, ..., an. Вычислить и вывести коэффициенты многочлена p(x) = (x - a1) (x - a2) ... * (x - an) (Для этого написать вспомогательную функцию для умножения двух многочленов)
Использовать функции fopen, fclose, fgets
Задание: По символьному файлу с текстом создать новый файл с форматированным текстом, в котором в каждой строке первое слово начинается с 3-ей позиции, а последнее заканчивается в 60-ой позиции
Задание: Написать функцию const char* strpbrk(const char *string, const char *strCharSet) работающую так же, как библиотечная и тестирующую программу к ней
Используйте приватные поля для данных, определите конструктор, который должен содержать значения по умолчанию, напишите методы установки и извлечения значений (set, get), выполнения операций ввода и вывода значения объекта созданного класса. Напишите конструктор копий, оператор присваивания, деструктор. Напишите программу для тестирования вашего класса
Задание: Создайте класс HugeInt, который хранит в 40-элементном массиве цифр целые числа разрядностью до 40 знаков. Разрядность указать в конструкторе. Предусмотреть функции сложения, вычитания, сравнения и проверки на 0
Для всех заданий используйте приватные поля для данных, определите конструктор, который должен содержать значения по умолчанию, напишите функции-элементы установки и извлечения значений, перегруженные операторы ввода и вывода значения объекта созданного класса и указанные в задании перегруженные операции. Напишите конструктор копий, оператор присваивания, деструктор, если требуется. Напишите программу для тестирования вашего класса и всех операций
Задание: Создайте класс Rational (рациональная дробь) с операциями +, +=, -, -=, =, ==, !=, >, <, >=, <=, *, *=, /, /=
Номера заданий выдаются индивидуально по запросу
Здесь приведено задание для варианта 2
Задание: Графический редактор
Программа должна хранить схему в виде заданной в задании структуры данных, где хранятся геометрические фигуры. Каждая фигура характеризуется уникальным идентификатором (int) id, координатами на экране (x, y), а также своими параметрами.
Программа должна уметь работать с фигурами, указанными в задании. Каждая фигуру должна уметь выводить на экран свои параметры в текстовом режиме с помощью метода print(). Возможно, в будущем будут добавлены новые фигуры.
Класс FigureList должен быть основан на связном списке. Связаный список должен быть реализован с помощью двух классов Node (элемент списка) и List (сам список).
class FigureList
{
// добавить фигуру в голову списка
void addToHead(Shape &shape);
// найти фигуру всписке по идентификатору
int findFigure(int id);
// удалить фигуру из списка
void erase(int id);
// вывести на экран в текстовом режиме информацию о всех фигурах в списке
void printAll();
}Программа должна работать с фигурами:
- Circle (параметры: радиус, надпись произвольной длины)
- Segment (параметры: координаты начала и коодинаты конца)
Требования к заданиям:
- указывать имена файлов исходных и результирующих файлов в командной строке
- файлы, после обработки заголовков, читать целиком в динамически заказанную память
- использовать в работе информацию из папки Форматы
Задание: Написать программу, формирующую по исходному BMP файлу новый BMP файл, повернутый по часовой стрелке на 90 градусов
Задание: Написать программу, формирующую по исходному WAV (16 бит на отсчет) файлу новый WAV файл (8 бит на отсчет)
Для 17 и 18 лаб приведены задания для варианта №4
Шаблоны и исключения
Во всех задачах требуется реализовать конструктор копий и оператор присваивания. Если в задании не оговорено ограничение на максимальный размер, то считается, что контейнер динамически растет
Во всех заданиях стоит избегать избыточного копирования параметров В main должно быть продемонстрировано, что шаблонный класс работает:
- для любого примитивного типа
- для struct
Point { int x; int y; int z; }
Задание: Сделать реализацию матрицы на шаблонах. Методы set, get, sum бросают исключения
Доп: Сохранение в файл и загрузка из файла, с исключениями, причем сохранять в json
Matrix(size_t row, size_t column) // конструктор
set() // устанавливает значение в ячейку
get() // возвращает значение по индексу
rows() // количество строк
сolumns() // количество столбцов
Matrix sum(const Matrix& m) // сумма матрицЗадание: Реализовать LFU кэш фиксированного размера (количество записей задается в конструкторе) для адресов (адресом является строка, например, “AFFB”). Согласно алгоритму LFU после исчерпания размера кэша в начале удаляются записи, которые запрашивались реже всего. Удобной реализацией такого кэша является map<адрес, число запросов адреса>. При реализации использовать дополнительный multimap или priority_queue (т.е. всего 2 map) для быстрого поиска адреса, который встречался наименьшее число раз.
LfuCache(size_t size) // конструктор
bool find_and_add(const std::string &address);
// возвращает true, если адрес найден в кэше
operator<< // для вывода на экранДоп: Связный список со всеми словами для перевода, текст переводится с помощью этих слов, причем слово сначала ищем в кеше а потом в списке, если не нашли, то добавляем в кеш, если кеш заполнен, то удаляем из него слово, которое встречалось реже всего
Эта лабораторная работа выдается если у ученика недостаточно баллов
Задание: Ориентированный граф задан и хранится матрицей смежности. В файле также задается вершина, с которой начинается обход. Построить дерево обхода с помощью bfs. Определить типы ребер графа и вывести их на экран
Доп: Сгенерировать изображение графа с помощью graphviz, раскрасить вершины в зависимости от типа ребер