forked from LebedevIlyaG/3821
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathВторой семестр - лабораторные
67 lines (59 loc) · 8.17 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
Лабораторные работы во втором семестре:
1. Zoo (без отчета).
Написать иерархию классов согласно выбранной или придуманной теме.
Примеры тем: зоопарк, музыкальные инструменты, деревья, канцелярские товары, транспорт.
Продемонстрировать (написать в main пример) работоспособность.
Должны быть использованы и продемонстрированы: абстракция, инкапсуляция, наследование, полиморфизм.
Иерархия должна содержать не менее трех уровней (не менее 7 классов), пример: на верхнем уровне - животное, от него наследуется млекопитающие и насекомые, от млекопитающего наследуется кошка и собака, от насекомых наследуются муравьи и пчелы.
Код должен быть залит на github.
2. Complex (без отчета).
Написать класс комплексных чисел, позволяющий работать с комплексными числами согласно материалу, проходимому в курсе, алгебра и геометрия. Продемонстрировать его работу на примере (написать в main пример).
Должны быть:
конструкторы (по умолчанию, инициализатор, копирования), доступ к защищенным полям;
перегруженные операции: +,-,*,/,=,==, потоковый ввод и вывод.
Код должен быть залит на github.
Дополнительное задание:
1 – написать и протестировать метод вычисления модуля комплексного числа;
2 – написать и протестировать метод возведения комплексного числа в положительную целую степень;
3 – написать и протестировать метод возведения в отрицательную целую степень (можно расширить предыдущий метод);
4 – написать и протестировать метод возведения в дробную степень (можно расширить предыдущий метод);
5 – написать и протестировать метод возведения в комплексную степень;
6 – печать тригонометрической формы комплексного числа.
3. String (без отчета).
Написать класс для работы со строками.
Продемонстрировать его работу на примере (написать в main пример).
Должны быть:
конструкторы (по умолчанию, инициализатор, копирования), деструктор, доступ к защищенным полям;
перегруженные операции: +,=,==, <, >, [] потоковый ввод и вывод;
поиск первого вхождения под слова, поиск первого вхождения символа, разбиение на под слова по символу.
Код должен быть залит на github.
Дополнительное задание:
1 – написать и протестировать метод, дублирующий строку k раз;
2 – написать и протестировать метод ищущи ВСЕ вхождения подстроки в строку;
3 – написать и протестировать метод возвращающий наиболее часто встречающийся символ в строке;
4 – написать и протестировать метод возвращающий массив символов строки без повторений (пример: вход - "абсаб", выход - "а", "б", "с" );
5 – написать и протестировать метод определяющий какой символ сколько раз встречается в строке (пример: вход - "абсаб", выход - а - 2, б - 2, с - 1).
4. Vector (с отчетом).
Написать классы для работы с векторами и матрицами, использовать шаблоны.
Вектора в математическом понимании: имеется набор значений из N мерного пространства, размерность задается как параметр.
Продемонстрировать их работу на примере (написать в main пример).
Должны быть:
конструкторы (по умолчанию, инициализатор, копирования), деструктор, доступ к защищенным полям;
перегруженные операции: +,-,*,/,=,==, [] потоковый ввод и вывод;
перегруженные операции +,-,*,/ должны быть реализованы для векторов (вектор +-*/ вектор), матриц (матрица +-* матрица), матрично-векторные (матрица * вектор и наоборот);
в классе вектор должна быть возможность отсортировать его тремя способами (пузырек, вставка, быстрая сортировки, см. вторая лабораторная первого семестра).
Код должен быть залит на github.
В отчете должно быть продемонстрировано, что теоретические оценки времени работы арифметических операций совпадают с поученными вашей программой.
Дополнительное задание за не сдачу в срок:
1 - написать метод, ищущий количество вхождений указанного значения;
2 - написать метод, ищущий все вхождения заданного значения;
3 - написать метод деления матриц.
5. GeometricShapes (без отчета).
Написать структуру данных для работы с геометрическими объектами в N мерном пространстве. Тип данных определяется пользователем (шаблоны).
Должны быть реализованы простейшие геометрические объекты, такие как: точка, линия, круг, квадрат, многоугольник, куб, симплекс и т.д.
Кроме самих геом. объектов должен быть реализован класс, осуществляющий обобщение действий со всеми созданными пользователями объектами - "контейнер".
Контейнер дол иметь следующие функции: добавить новый объект, удалить существующий объект, отобразить все имеющиеся объекты, отобразить выбранный объект и т.д. и т.п.
Продемонстрировать (написать в main пример) работоспособность.
Должны быть использованы и продемонстрированы: абстракция, инкапсуляция, наследование, полиморфизм, перегрузка операций, шаблоны.
Иерархия должна содержать не менее 7 классов.
Код должен быть залит на github.