Лабораторная работа 4. Наследование классов
ЛАБОРАТОРНАЯ РАБОТА 1. ДИНАМИЧЕСКАЯ ПАМЯТЬ ПОТОКОВЫЙ ВВОД/ВЫВОД. ПЕРЕГРУЗКА ФУНКЦИЙ Задание 1 Написать программу, использующую потоки cout и cin для ввода/вывода. Программа должна использовать операции new и delete для работы с динамической памятью. В программе должна быть функция создания и ввода динамического целочисленного массива. Используя манипуляторы, выведите на экран результат функции, обрабатывающей массив согласно своему варианту, отформатировав его к правой стороне выделенного поля (10 позиций), не более 4-х знаков после запятой, а символ-заполнитель установите *. Не забудьте освободить динамическую память. Задние 2 Выполните предыдущее задание для прямоугольного двумерного динамического массива. Варианты (задание 1 и 2)
Задание 3 Написать программу, использующую потоки cout и cin для ввода/вывода и перегрузку функций. Программа должна содержать одноименные функции, описанные ниже, и демонстрировать их возможности. Варианты (3)
ЛАБОРАТОРНАЯ РАБОТА 2. КЛАССЫ И ОБЪЕКТЫ. ОТНОШЕНИЕ ЧАСТЬ-ЦЕЛОЕ МЕЖДУ КЛАССАМИ Задание 1 Разработать класс плоской геометрической фигуры, согласно варианту. Класс должен включать конструктор, деструктор, метод вывода на экран, функции площади и периметра. Добавить к определению класса перегруженные функции помещения в поток и извлечения из потока.
Добавить статический элемент класса – счетчик объектов и статическую функцию класса – возвращающую счетчик. Используя счетчик, исследуйте, где и как вызываются конструкторы и деструкторы Написать программу, иллюстрирующую возможности класса.
Задание 2 Реализовать класс Точка с компонентами координат x и y, с методом вычисления расстояния от начала координат, конструкторами и деструктором. На основе класса Точка переработать класс плоской геометрической фигуры из предыдущего задания, где компонентными данными будут уже не расстояния/углы, а точки – объекты нового класса. К имеющимся конструкторам по сторонам/углам добавить новые конструкторы. Написать программу, иллюстрирующую возможности класса.
Варианты
ЛАБОРАТОРНАЯ РАБОТА 3. КЛАССЫ, ИСПОЛЬЗУЮЩИЕ ДИНАМИЧЕСКУЮ ПАМЯТЬ. ПЕРЕГРУЗКА ОПЕРАЦИЙ
Задание 1 Создать класс Динамический массив. Класс должен содержать
В классе должна быть предусмотрена операция помещения в поток и операция извлечения из потока элементов объекта. Задание 2 Реализовать дополнительные возможности для объектов класса, описанные в варианте.
Варианты 1 и 2 вариант: Динамический массив из элементов типа char дополнительно должен предусматривать возможность перегрузки: операции сложения (+) - конкатенации строк (результат новый объект класса)
операции умножения (*) - количество символов, которые есть в обоих массивах (мощность множества пересечения) операций префиксного и постфиксного инкремента (++a, a++) – увеличение кодов всех символов на 1. функции модуля (abs) - количество цифр в строке. 3 и 4 вариант: Динамический массив из элементов типа double дополнительно должен предусматривать возможность перегрузки: операции сложения (+) - поэлементное сложение (результат новый объект класса) операции умножения (*) - скалярное произведение векторов операций префиксного и постфиксного инкремента (++a, a++) – увеличение всех элементов на 1. функции модуля (abs) - длина вектора (не массива). 5, 6 и 7 вариант: Динамический массив из элементов типа int дополнительно должен предусматривать возможность перегрузки: операции сложения (+) - поэлементное сложение (результат новый объект класса) операции умножения (*) - скалярное произведение векторов операций префиксного и постфиксного инкремента (++a, a++) – увеличение всех элементов на 1. функции модуля (abs) - длина вектора (не массива). 8 и 9 вариант: Динамический массив из элементов типа bool дополнительно должен предусматривать возможность перегрузки: операции сложения (+) - поэлементная дизъюнкция (результат новый объект класса) операции умножения (*) - количество единиц в поэлементной конъюнкции операций префиксного и постфиксного инкремента (++a, a++) – поэлементная инверсия. функции модуля (abs) - количество единиц в массиве. ЛАБОРАТОРНАЯ РАБОТА 4. НАСЛЕДОВАНИЕ КЛАССОВ Задание 1 Создать класс-наследник для класса Динамический массив из предыдущей лабораторной работы согласно варианту. Обеспечить корректное наследование, корректные конструкторы и деструкторы. Задание 2 Добавить операции и функции, описанные в индивидуальном задании. Варианты 1. Класс Стек (элементы char) функции pop, push(x), top, empty - соответственно извлечение из начала, добавление в начало, ссылка на первый элемент, проверка на пустоту; перегрузка операций << (push) и >>(pop) соответственно.
2. Класс Очередь (элементы char) функции pop, push(x), front, back, empty - соответственно извлечение из начала, добавление в конец, ссылки на первый и последний элементы, проверка на пустоту; перегрузка операций << (push) и >>(pop) соответственно. 3. Класс Вектор (элементы double) все операции с векторами: сложение, вычитание, домножение на число, скалярное произведение, проверка коллинеарности и параллельности двух векторов; обязательная перегрузка операций, считывание вектора из потока до нулевого элемента (перегрузка >>). 4. Класс Прямая (элементы double) y=kx+b все операций: сложение, вычитание, домножение на число, параллельный перенос (y=f(x)+a), отражение (y=-f(x)), нахождение точки пересечения прямых, нахождение точки пересечения с Ох, угол наклона к Ох, проверка коллинеарности и параллельности двух векторов; обязательная перегрузка операций, считывание коэффициентов из потока (перегрузка >>), прямая в 3-хмерном пространстве. 5. Класс Многочлен (элементы int) все операции: сложение, вычитание, домножение на число, добавление числа; обязательная перегрузка операций, считывание вектора из потока до нулевого элемента (перегрузка >>), перегрузка деления многочлена на многочлен. 6.Класс Упорядоченная последовательность (элементы int, все элементы упорядочены по неубыванию) все операции с множествами с сохранением упорядоченности: сложение, вычитание, пересечение (*), функция проверки на подмножество, модуль - среднее арифметическое последовательности; обязательная перегрузка операций, функции проверки на арифметическую или геометрическую прогрессии. 7. Класс Множество (элементы int, обратите внимание, что в множестве значения элементов внутри одного объекта не должны повторяться) все операций с множествами: сложение, вычитание, пересечение (*), модуль - количество элементов; обязательная перегрузка операций, функции проверки на подмножество. 8. Класс Подмножество (элементы bool, множество задается статическим компонентным данным класса - массивом из неповторяющихся элементов, объект показывает какие элементы множества входят в данное подмножество - true на соответствующей позиции, false - иначе) все операции с множествами: сложение, вычитание, пересечение (*), модуль - количество элементов; обязательная перегрузка операций, функция проверки на подмножество. 9. Класс Дек(элементы bool).функции popF, popB,pushF(x),pushB(x), front, back,empty - соответственно извлечение из начала или конца, добавление в начало или конец, ссылки на первый и последний элементы, проверка на пустоту; перегрузка операций << (pushB) и >>(popB) соответственно.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|