-
Notifications
You must be signed in to change notification settings - Fork 6
/
Второй семестр - лабораторные
73 lines (59 loc) · 8.75 KB
/
Второй семестр - лабораторные
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Лабораторные работы во втором семестре:
1. Zoo (без отчета). Необходимо сдать до 27.03.2022 23:59. Максимум: 10 баллов.
Написать иерархию классов согласно выбранной или придуманной теме.
Примеры тем: зоопарк, музыкальные инструменты, деревья, канцелярские товары, транспорт.
Продемонстрировать (написать в main пример) работоспособность.
Должны быть использованы и продемонстрированы: абстракция, инкапсуляция, наследование, полиморфизм.
Иерархия должна содержать не менее трех уровней (не менее 7 классов), пример: на верхнем уровне - животное, от него наследуется млекопитающие и насекомые, от млекопитающего наследуется кошка и собака, от насекомых наследуются муравьи и пчелы.
2. Complex (без отчета). Необходимо сдать до 17.04.2022 23:59. Максимум 10 + 6 баллов.
Написать класс комплексных чисел, позволяющий работать с комплексными числами согласно материалу, проходимому в курсе, алгебра и геометрия. Продемонстрировать его работу на примере (написать в main пример).
Должны быть:
конструкторы (по умолчанию, инициализатор, копирования), доступ к защищенным полям;
перегруженные операции: +,-,*,/,=,==, потоковый ввод и вывод.
Дополнительное задание:
1 – написать и протестировать метод вычисления модуля комплексного числа;
2 – написать и протестировать метод возведения комплексного числа в положительную целую степень;
3 – написать и протестировать метод возведения в отрицательную целую степень (можно расширить предыдущий метод);
4 – написать и протестировать метод возведения в дробную степень (можно расширить предыдущий метод);
5 – написать и протестировать метод возведения в комплексную степень;
6 – печать тригонометрической формы комплексного числа.
3. String (без отчета). Необходимо сдать до 24.04.2022 23:59. Максимум 10 + 5 баллов.
Написать класс для работы со строками.
Продемонстрировать его работу на примере (написать в main пример).
Должны быть:
конструкторы (по умолчанию, инициализатор, копирования), деструктор, доступ к защищенным полям;
перегруженные операции: +,=,==, <, >, [] потоковый ввод и вывод;
поиск первого вхождения под слова, поиск первого вхождения символа, разбиение на под слова по символу.
Дополнительное задание:
1 – написать и протестировать метод, дублирующий строку k раз;
2 – написать и протестировать метод ищущи ВСЕ вхождения подстроки в строку;
3 – написать и протестировать метод возвращающий наиболее часто встречающийся символ в строке;
4 – написать и протестировать метод возвращающий массив символов строки без повторений (пример: вход - "абсаб", выход - "а", "б", "с" );
5 – написать и протестировать метод определяющий какой символ сколько раз встречается в строке (пример: вход - "абсаб", выход - а - 2, б - 2, с - 1).
4. Vector (с отчетом). Необходимо сдать до 22.05.2022 23:59. Максимум 10 + 10 + 3 баллов.
Написать классы для работы с векторами и матрицами, использовать шаблоны.
Вектора в математическом понимании: имеется набор значений из N мерного пространства, размерность задается как параметр.
Матрица должна быть наследником вектора.
Классы вектора и матрицы должны быть вынесены в статическую библиотеку.
Продемонстрировать их работу на примере (написать в main пример).
Должны быть:
конструкторы (по умолчанию, инициализатор, копирования), деструктор, доступ к защищенным полям;
перегруженные операции: +,-,*,/,=,==, [] потоковый ввод и вывод;
перегруженные операции +,-,*,/ должны быть реализованы для векторов (вектор +-*/ вектор), матриц (матрица +-* матрица), матрично-векторные (матрица * вектор и наоборот);
В отчете должно быть продемонстрировано, что теоретические оценки времени работы арифметических операций совпадают с поученными вашей программой.
Дополнительное задание:
1 - написать метод, ищущий количество вхождений указанного значения;
2 - написать метод, ищущий все вхождения заданного значения;
3 - написать метод деления матриц.
4 - в классе вектор должна быть возможность отсортировать его тремя способами (пузырек, вставка, быстрая сортировки, см. вторая лабораторная первого семестра).
5. GeometricShapes (без отчета). Необходимо сдать до 29.05.2022 23:59. Максимум 10 баллов.
Написать структуру данных для работы с геометрическими объектами в N мерном пространстве. Тип данных определяется пользователем (шаблоны).
Должны быть реализованы простейшие геометрические объекты, такие как: точка, линия, круг, квадрат, многоугольник, куб, симплекс и т.д.
Кроме самих геом. объектов должен быть реализован класс, осуществляющий обобщение действий со всеми созданными пользователями объектами - "контейнер".
Контейнер дол иметь следующие функции: добавить новый объект, удалить существующий объект, отобразить все имеющиеся объекты, отобразить выбранный объект и т.д. и т.п.
Продемонстрировать (написать в main пример) работоспособность.
Должны быть использованы и продемонстрированы: абстракция, инкапсуляция, наследование, полиморфизм, перегрузка операций, шаблоны.
Иерархия должна содержать не менее 7 классов.
Дополнительное задание:
По одному баллу за каждый дополнительный класс.
На оценку 5 необходимо набрать 60 баллов.