Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задание_на_курсовую_работу

.pdf
Скачиваний:
16
Добавлен:
12.04.2015
Размер:
303.2 Кб
Скачать

операторы =, +, - , *, +=, -=, *= с целым числом операторы ++ и --. Определить операторы =, +, - , *, +=, -=, *= с вещественным числом, операторы ++ и --. Определить функцию печати. Сравнить время работы созданного класса и встроенного массива типа 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). Определить функцию нормы - для комплексных чисел - модуль в квадрате, для вектора - корень квадратный из суммы элементов по модулю, для матрицы - максимальное значение по модулю. Для проверки определить массив указателей на абстрактный класс,