Задание_на_курсовую_работу
.pdfоператоры =, +, - , *, +=, -=, *= с целым числом операторы ++ и --. Определить операторы =, +, - , *, +=, -=, *= с вещественным числом, операторы ++ и --. Определить функцию печати. Сравнить время работы созданного класса и встроенного массива типа float. Перегрузить операторы вывода в поток и ввода из потока.
24.Создать класс матрица, содержащий в качестве параметров указатель на float, количество строк и столбцов и состояние ошибки. Определить конструкторы по умолчанию, конструктор с одним и с двумя параметрами, конструктор копирования, деструктор. Определить операторы =, +, -, +=, - =, *., *= с объектами этого класс, с float и с вектором, определенном в задании 25. Определить оператор [] так, чтобы обращение [][] к элементам имело смысл, аналогичный встроенному. Перегрузить операторы вывода в поток и ввода из потока.
25.Создать класс вектор, содержащий в качестве параметров указатель на double,размерность вектора и переменную ошибки. Класс имеет конструкторы по умолчанию, конструктор с одним и двумя параметрами, конструктор копирования и деструктор. Определить оператор +, - , * , - как дружественные функции, =, +=, -=, *=,[] - как функции-члены. Сравнить время работы созданного класса и встроенного массива типа double. Перегрузить операторы вывода в поток и ввода из потока.
26.Создать класс вектор, содержащий в качестве параметров указатель на double, число строк и столбцов и состояние ошибки. Определить конструкторы по умолчанию, конструктор с одним и с двумя параметрами, конструктор копирования, деструктор. Определить операторы =, +, -, +=, - =, *., *= с объектами этого класс, с double и с вектором, определенном в задании 25. Определить оператор [] так, чтобы обращение [][] к элементам имело смысл, аналогичный встроенному. Перегрузить операторы вывода в поток и ввода из потока.
27.Создать класс комплексные числа, перегрузив операторы, +, -, ++, --, +=, -=, *, ./, *=, /=, !, !=, ==, >,<, >=, <=. Сложение и вычитание должно производиться как с элементами данного класса так и со встроенными float. Перегрузить операторы вывода в поток и ввода из потока.
ЗАДАНИЕ №4. - ПРОСТОЕ НАСЛЕДОВАНИЕ
1.Создать классы фигура, четырехугольник, квадрат и прямоугольник.
Создать из них иерархию. Определить функции печати, конструкторы и деструкторы, вычисление площади и периметра.
2.Создать класс жидкость, содержащий в качестве параметров название (строка), плотность. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс – спиртной напиток, имеющий дополнительный параметр – крепость. Определить конструкторы по
умолчанию и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения плотности и крепости.
3.Создать класс окно, содержащий в качестве параметров координаты верхнего левого и нижнего правого угла, цвет фона (строка). Определить конструкторы, деструктор и функцию печати. Создать public-производный класс – окно с меню, имеющий дополнительный параметр – строку меню. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения цвета фона и строки меню.
4.Создать класс точка, содержащий в качестве параметров x- и y- координаты, класс эллипс, и класс окружность. Определить иерархию типов. Определить функции печати, конструкторы, деструкторы, вычисление площадей.
5.Создать класс животное, содержащий в качестве параметров классификацию (строка), число конечностей, количество потомков. Определить конструкторы, деструктор и функцию печати. Создать publicпроизводный класс - домашнее животное, имеющий дополнительный параметр - кличку. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения названия клички и числа потомков.
6.Создать класс карта, содержащий в качестве параметров ранг и масть. Карту можно перевернуть и открыть. Дополнительно создать класс колода карт, содержащий карты. Создать два производных класса от класса колода карт, в одном карты могут доставаться только по порядку, в другом - вытаскиваться произвольно.
7.Создать класс машина, содержащий в качестве параметров марку (строка), число цилиндров, мощность. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - грузовик, имеющий дополнительный вещественный параметр - грузоподъемность кузова. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения марки и грузоподъемности.
8.Создать класс студент, содержащий в качестве параметров имя (строка), курс и идентификационный номер. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - студентдипломник, имеющий дополнительный строковый параметр - тему диплома. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения названия диплома и идентификационного номера.
9.Создать класс точка и производные от него - окружность и эллипс. Определить конструкторы, деструкторы и функции печати. Определить функции переустановки центра окружности и эллипса.
10.Создать класс точка, содержащий в качестве параметров x- и y- координаты. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - цветная точка, имеющий дополнительный строковый параметр - цвет точки. Определить конструкторы по умолчанию и с разным числом параметров, деструкторы, функцию печати. Определить функции переназначения цвета и координат точки, вывода точки на экран.
11.Создать иерархию классов: транспортное средство, автомобиль,
грузовик, и самолет. Определить функции печати, конструкторы и деструкторы.
12.Создать класс человек, содержащий в качестве параметров имя (строка), возраст, вес. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - школьник, имеющий дополнительный параметр - класс (год обучения). Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения возраста и класса.
13.Создать класс человек, содержащий в качестве параметров имя (строка), возраст, вес. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - гражданин, имеющий дополнительный параметр - номер паспорта. Определить конструкторы по умолчанию и с разным числом параметров, деструктор, функцию печати. Определить функции переназначения возраста и номера паспорта.
14.Создать класс карта, содержащий в качестве параметров ранг и масть. Дополнительно создать класс колода карт, содержащий карты. Конструкторы колоды должны инициализировать колоду упорядочено и случайным образом. Создать производный класс от колоды - пасьянс, в котором выбираются по три карты и, если две крайние одного цвета, то их выбрасывают.
15.Создать классы: колесо, велосипед и автомобиль. Составить из них иерархию или композицию.
16.Создать класс элемент динамической структуры - узел. Используя иерархию и композицию классов, на основе класса узел создать класс бинарное дерево. У бинарного дерева есть корневой узел. Реализовать операцию добавления узла в дерево, операции различных обходов дерева (последовательный обход - вначале левое поддерево, потом правое и обратный обход). Узел может быть помещен в дерево двоичного поиска только в качестве концевого узла (листа). Если дерево является пустым, то создается новый экземпляр класса узел и он помещается в дерево. Если дерево не является пустым, то программа сравнивает вставляемое в дерево значение со значением в корневом узле и если оно меньше, то помещает в левое поддерево, а если больше, то в правое. Если значения равны, то выводится сообщение, что повтор, и новое значение не вставляется.
17.Создать класс элемент динамической структуры - узел. Используя иерархию и композицию классов, на основе класса узел создать класс бинарное дерево. У бинарного дерева есть корневой узел. Реализовать операцию добавления узла в дерево. Узел может быть помещен в дерево двоичного поиска только в качестве концевого узла (листа). Если дерево является пустым, то создается новый экземпляр класса узел и он помещается в дерево. Если дерево не является пустым, то программа сравнивает вставляемое в дерево значение со значением в корневом узле и если оно меньше, то помещает в левое поддерево, а если больше, то в правое. Если значения равны, то выводится сообщение, что повтор, и новое значение не вставляется. Реализовать операцию поиска заданного значения в дереве с выводом уровня, на котором находится значение.
18.Создать класс элемент динамической структуры – узел. Используя иерархию и композицию классов, на основе класса узел создать класс бинарное дерево. У бинарного дерева есть корневой узел. Реализовать операцию добавления узла в дерево. Узел может быть помещен в дерево двоичного поиска только в качестве концевого узла (листа). Если дерево является пустым, то создается новый экземпляр класса узел и он помещается в дерево. Если дерево не является пустым, то программа сравнивает вставляемое в дерево значение со значением в корневом узле и если оно меньше, то помещает в левое поддерево, а если больше, то в правое. Если значения равны, то выводится сообщение, что повтор, и новое значение не вставляется. Реализовать операцию поиска пары узлов родитель-предок, сумма значений которых максимальна.
19.Используя иерархию и наследование, создать классы окно, окно с заголовком и окно с кнопкой.
20.Создать класс карта, содержащий в качестве параметров ранг и масть. Дополнительно создать класс колода карт, содержащий карты. Конструкторы колоды должны инициализировать колоду упорядочено и случайным образом. Создать производный класс от класса колода – шулерская колода. В ней определить дополнительную функцию, которая позволяла бы создавать любое количество карт любого ранга и масти.
21.Создать класс двигатель, содержащий в качестве параметров тип двигателя (строка) и мощность. Определить конструкторы и метод доступа. Создать класс машина, содержащий класс двигатель, марку машины (строка), цену. Определить publicпроизводный класс грузовик, имеющий дополнительный параметр - грузоподъемность. Определить конструкторы, деструкторы и функцию печати.
22.Создать класс жесткий диск, имеющий в качестве параметров тип диска (строка) и объем (Мбайт). Определить конструкторы и метод доступа. Создать класс компьютер, содержащий класс жесткий диск, марку (строка), цену. Определить publicпроизводный класс компьютер с
монитором, имеющий дополнительный параметр - размер монитора. Определить конструкторы, деструкторы и функцию печати.
23.Создать класс колесо, имеющий в качестве параметров радиус и материал (строка). Создать класс машина, содержащий класс колесо, марку (строка), цену. Определить конструкторы и метод доступа. Определить publicпроизводный класс грузовик, имеющий дополнительный параметр - грузоподъемность. Определить конструкторы, деструкторы и функцию печати.
24.Создать класс комната, имеющий в качестве параметров площадь и количество окон. Определить конструктор и метод доступа. Создать класс однокомнатная квартира, содержащий класс комната, площадь кухни, этаж. Определить public-производный класс офис (наследует от класса однокомнатная квартира и имеет дополнительный параметр – количество сотрудников). Определить конструкторы, деструкторы и функцию печати.
25.Создать класс процессор, имеющий в качестве параметров мощность (МГц) и фирму-изготовителя (строка). Определить конструкторы и метод доступа. Создать класс компьютер, содержащий класс процессор, марку (строка), цену. Определить publicпроизводный класс компьютер с монитором, имеющий дополнительный параметр - размер монитора. Определить конструкторы, деструкторы и функцию печати.
26.Создать класс хвост, имеющий в качестве параметров длину и вид (строка). Определить конструкторы и метод доступа. Создать класс хвостатое животное, содержащий класс хвост, цвет (строка), возраст. Определить publicпроизводный класс собака, имеющий дополнительный параметр - кличку (строка). Определить конструкторы, деструкторы и функцию печати.
ЗАДАНИЕ №5. - МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ
1.Создать иерархию типов - корабль, пассажирский транспорт и пассажирский корабль. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
2.Создать иерархию типов - машина, пассажирский транспорт и автобус.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
3.Создать иерархию типов – рабочее место, комната и офис. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования,
виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
4.Создать иерархию типов – файл для чтения, файл для записи и файл для чтения и записи. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
5.Создать иерархию типов - студент, отец семейства, студент-отец семейства. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
6.Создать иерархию типов - работник, женщина, работник-женщина.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
7.Создать иерархию типов - работник, отец семейства, работник-отец семейства. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
8.Создать иерархию типов - политик, честный человек, честный политик.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
9.Создать иерархию типов - студент, солдат, курсант. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
10.Создать иерархию типов - студент, преподаватель, аспирант.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
11.Создать иерархию типов - преподаватель, военный, преподаватель на военной кафедре. Реализовать во всех классах конструкторы по
умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
12.Создать иерархию типов - мелодия, товар, мелодия в интернет-
магазине. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
13.Создать иерархию типов - лист, текст, документ. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
14.Создать иерархию типов - оружие, машина, танк. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
15.Создать иерархию типов - источник знаний, книга, учебник. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
16.Создать иерархию типов - часы, будильник, часы с будильником.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
17.Создать иерархию типов - музыкальный инструмент, игрушка,
игрушечное пианино. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
18.Создать иерархию типов - компьютер, телефон, смартфон. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
19.Создать иерархию типов - животное, домашний житель, кошка.
Реализовать во всех классах конструкторы по умолчанию, конструктор
копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
20.Создать иерархию типов - насекомое, вредитель, колорадский жук.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
21.Создать иерархию типов - животное, сторож, собака. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
22.Создать иерархию типов – устройство хранения данных, периферийное устройство, жѐсткий диск. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
23.Создать иерархию типов – вредитель, человек, шпион. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
24.Создать иерархию типов – драгоценность, украшение, кольцо.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
25.Создать иерархию типов - животное, еда, корова. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
26.Создать иерархию типов – носитель данных, подставка для кофе, CD-
диск. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
27.Создать иерархию типов - лекарство, напиток, микстура. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и
ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
28.Создать иерархию типов – устройство ввода, устройство вывода,
сенсорный экран. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
29.Создать иерархию типов – бюджетная организация, учебный центр,
институт. Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике. Использовать виртуальные базовые классы.
30.Создать иерархию типов – стихотворная форма, пожелание, тост.
Реализовать во всех классах конструкторы по умолчанию, конструктор копирования, виртуальные деструкторы, перегруженные функции вывода в поток и ввода из потока. Реализовать не менее 5 функций в каждом классе, 3 из них перегрузить в наследнике.
ЗАДАНИЕ №6. - ПОЛИМОРФИЗМ
1.Создать абстрактный базовый класс уравнения с виртуальной функцией печать корней уравнения. Создать производные классы: линейное уравнение и квадратное уравнение. Определить функцию вычисления корней уравнений. Для проверки определить массив указателей на абстрактный класс, которым присваиваются адреса различных объектов.
2.Создать абстрактный базовый класс фигура с виртуальной функцией – печать объѐма фигуры. Создать производные классы: параллелепипед,
пирамида, тетраэдр, шар со своими функциями печати объема. Для проверки определить массив указателей на абстрактный класс, которым присваиваются адреса различных объектов. Объем параллелепипеда:
V xyz (x,y,z – стороны); пирамиды: V xyh (x,y, - стороны, h – высота);
тетраэдра: V |
|
2 |
|
|
3 |
(а – длина ребра); шара: V |
4 r 3 |
|
|
|
|
a |
|
|
(r – радиус шара). |
||
12 |
|
|
3 |
|||||
|
|
|
|
|
|
3. Создать абстрактный базовый класс фигура с виртуальной функцией – вычисление площади фигуры. Создать производные классы:
прямоугольник, круг, прямоугольный треугольник, трапеция со своими функциями вычисления площади. Для проверки определить массив указателей на абстрактный класс, которым присваиваются адреса
S a b h .
2
4.Создать абстрактный базовый класс фигура с виртуальной функцией –
печать площади поверхности. Создать производные классы:
параллелепипед, тетраэдр, шар со своими функциями печати площади поверхности. Для проверки определить массив указателей на абстрактный класс, которым присваиваются адреса различных объектов, а затем печатаются площади всех фигур, входящих в список. Площадь
поверхности параллелепипеда: S 6xy . Площадь поверхности шара:
S4 r 2 ; площадь поверхности тетраэдра: S 3a 2 .
5.Создать абстрактный базовый класс прогрессия с виртуальной функцией –
вычисление суммы прогрессии. Создать производные классы:
арифметическая прогрессия и геометрическая прогрессия. Каждый класс имеет два поля типа double: первый член прогрессии и постоянная разность (для арифметической) и постоянное отношение (для геометрической). Определить функцию вычисления суммы, где параметром является количество элементов прогрессии.
|
Арифметическая прогрессия a j |
a0 jd, |
j 0, 1, 2, |
||
|
Сумма арифметической прогрессии: sn |
|
n 1 a0 an |
||
2 |
|||||
|
|
|
|
||
|
Геометрическая прогрессия: a j |
a0 r j , |
j 0, 1, 2, |
Сумма геометрической прогрессии: sn a0 an r
1r
6.Создать абстрактный класс – млекопитающее, с чисто виртуальной функцией info(), которая возвращает строку с описанием объекта. Определить производные классы - животное и человек. У животных определить производные классы собака и корова. Определить виртуальные функции описания человека, собаки и коровы. Для проверки определить массив указателей на абстрактный класс, которым присваиваются адреса различных объектов, а затем печатается информация обо всех млекопитающих из списка.
7.Создать абстрактный класс кривая с виртуальной функцией вычисления координаты y для некоторой x. Создать производные классы: прямая, эллипс, гипербола со своими функциями вычисления y в зависимости от входного параметра x. Для проверки определить массив указателей на абстрактный класс, которым присваиваются адреса различных объектов, а затем печатается информация обо всех конкретных элементах списка.
Уравнение прямой: y ax b ; эллипса: |
x2 |
|
y2 |
1 ; гиперболы: |
x2 |
|
y 2 |
1 |
|
a2 |
b2 |
a2 |
b2 |
||||||
|
|
|
|
|
8.Создать абстрактный класс структура данных с виртуальной функцией: норма. Создать производные классы: комплексные числа, вектор из 10 элементов, матрица (2х2). Определить функцию нормы - для комплексных чисел - модуль в квадрате, для вектора - корень квадратный из суммы элементов по модулю, для матрицы - максимальное значение по модулю. Для проверки определить массив указателей на абстрактный класс,