Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная работа 4. Наследование классов

ЛАБОРАТОРНАЯ РАБОТА 1. ДИНАМИЧЕСКАЯ ПАМЯТЬ ПОТОКОВЫЙ ВВОД/ВЫВОД. ПЕРЕГРУЗКА ФУНКЦИЙ

Задание 1

Написать программу, использующую потоки cout и cin для ввода/вывода. Программа должна использовать операции new и delete для работы с динамической памятью.

В программе должна быть функция создания и ввода динамического целочисленного массива. Используя манипуляторы, выведите на экран результат функции, обрабатывающей массив согласно своему варианту, отформатировав его к правой стороне выделенного поля (10 позиций), не более 4-х знаков после запятой, а символ-заполнитель установите *. Не забудьте освободить динамическую память.

Задние 2

Выполните предыдущее задание для прямоугольного двумерного динамического массива.

Варианты (задание 1 и 2)

 

  1. Найдите полусумму максимального и минимального элементов
  2. Найдите отношение суммы четных к сумме нечетных элементов массива
  3. Найти среднее арифметическое положительных элементов массива.
  4. Найдите отношение количества отрицательных элементов к количеству положительных элементов массива
  5. Найдите среднее арифметическое четных элементов массива.
  6. Найдите отношение минимального значения к максимальному
  7. Найдите среднее арифметическое отрицательных нечетных элементов массива
  8. Найдите среднее геометрическое модулей максимального и минимального значений массива
  9. Найти среднее арифметическое отрицательных элементов массива.
  10. Найдите отношение количества четных элементов к количеству нечетных элементов массива
  11. Найдите среднее арифметическое отрицательных четных элементов массива
  12. Найдите среднее арифметическое положительных элементов массива.
  13. Найдите отношение максимального значения к минимальному
  14. Найдите среднее арифметическое отрицательных нечетных элементов массива
  15. Найдите отношение суммы модулей отрицательных к сумме положительных элементов массива
  16. Найдите минимальное значение среди положительных элементов (если таких в массиве нет, то результат – ноль)
  17. Найдите максимальное значение среди отрицательных элементов (если таких в массиве нет, то результат – ноль)
  18. Найдите количество элементов массива, имеющих максимальное значение

 

Задание 3

Написать программу, использующую потоки cout и cin для ввода/вывода и перегрузку функций. Программа должна содержать одноименные функции, описанные ниже, и демонстрировать их возможности.

Варианты (3)

  1. Написать функции, вычисляющие произведение числа на число, скалярное и векторное произведение двух векторов (во втором случае входным параметром будет еще и адрес выходного массива; значения входных массивов не должны изменяться, а результат должен помещаться в другой массив).
  2. Написать функции, вычисляющие сумму двух чисел, двух векторов из трех элементов и двух матриц 3х3 (значения входных массивов не должны изменяться, а результат должен помещаться в другой массив).
  3. Написать функции, вычисляющие модуль целого числа, модуль действительного числа, длину вектора из трех элементов и определитель матрицы 3х3.
  4. Написать функции, находящие расстояние между точками, минимальное расстояние между точкой и прямой, прямой и точкой, расстояние между параллельными прямыми.

ЛАБОРАТОРНАЯ РАБОТА 2. КЛАССЫ И ОБЪЕКТЫ. ОТНОШЕНИЕ ЧАСТЬ-ЦЕЛОЕ МЕЖДУ КЛАССАМИ

Задание 1

Разработать класс плоской геометрической фигуры, согласно варианту. Класс должен включать конструктор, деструктор, метод вывода на экран, функции площади и периметра.

Добавить к определению класса перегруженные функции помещения в поток и извлечения из потока.

Добавить статический элемент класса – счетчик объектов и статическую функцию класса – возвращающую счетчик. Используя счетчик, исследуйте, где и как вызываются конструкторы и деструкторы

Написать программу, иллюстрирующую возможности класса.

 

 

Задание 2

Реализовать класс Точка с компонентами координат x и y, с методом вычисления расстояния от начала координат, конструкторами и деструктором.

На основе класса Точка переработать класс плоской геометрической фигуры из предыдущего задания, где компонентными данными будут уже не расстояния/углы, а точки – объекты нового класса. К имеющимся конструкторам по сторонам/углам добавить новые конструкторы.

Написать программу, иллюстрирующую возможности класса.

 

Варианты

  1. Равнобокая трапеция (компонентные данные: основания, боковая сторона, углы)
  2. Параллелограмм (компонентные данные: стороны, углы)
  3. Квадрат (компонентные данные: стороны, углы)
  4. Прямоугольник (компонентные данные: стороны, углы)
  5. Прямоугольный треугольник (компонентные данные: стороны, углы)
  6. Треугольник (компонентные данные: стороны, углы)
  7. Ромб (компонентные данные: стороны, углы)
  8. Правильный треугольник (компонентные данные: стороны, углы)
  9. Прямоугольная трапеция (компонентные данные: стороны, углы)

 


ЛАБОРАТОРНАЯ РАБОТА 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...