Для студентов ИДДО НИУ «МЭИ» по предмету Объектно-ориентированное программирование (ООП)Более сложные элементы. Контрольная работаБолее сложные элементы. Контрольная работа
2025-06-022025-06-02СтудИзба
Объектно-ориентированное программирование - КМ-4. Более сложные элементы. Контрольная работа
Новинка
Описание
Курс Объектно-ориентированное программирование З - КМ-4. Более сложные элементы. Контрольная работа. Работа сдана на оценку 5.
Данное задание делается на основе задания КМ-2 , вариант 7.
Даны матрицы A (4×4), B (5×5), C (3×3). Вычислить значение выражения (PA + PB) * PC, где PA, PB, PC — произведение положительных элементов матрицы A, B, C, стоящих выше главной диагонали.
Условия для задания КМ-4:
1. Задание 1. Новые элементы добавляются в приложение обработки матриц семинара 1 (приложение с одним классом, без класса-наследника). Найдите или восстановите это приложение. Класс, имеющийся в этом приложении, будем называть MATRIX. Результаты выполнения следующих пунктов 2-7 задания можно посмотреть в «Заготовке примера приложения» (параграф 2, следующий после Задания). 2. Добавьте в приложение класс VECTOR для обработки векторов. Минимальный набор полей класса VECTOR: длина вектора и указатель на его начало. Минимальный набор методов класса VECTOR: конструктор, деструктор, ввод элементов вектора, вывод элементов вектора. 3. Добавьте в класс VECTOR конструктор копирования. Добавьте в функцию main инструкции, обеспечивающие вызов этих конструкторов копирования. Отладьте полученное приложение. Ответьте на вопросы: в каких случаях в классе должен быть конструктор копирования? При выполнении каких инструкций вызывается конструктор копирования? 4. В классе VECTOR переопределите операцию присваивания. Ответьте на вопрос: в каких ситуациях будет работать переопределенная операция присваивания? Напишите функцию main, которая проиллюстрирует работу переопределенных операций присваивания. Отладьте полученное приложение. 5. Напишите функцию умножения матрицы на вектор, дружественную для обоих классов MATRIX и VECTOR. Обратите внимание, что прототип этой функции должен присутствовать в обоих классах, поэтому описанию класса MATRIX должно быть доступно описание класса VECTOR, а описанию класса VECTOR должно быть доступно описание класса MATRIX. Посмотрите, как для разрешения этой «цикличности» используется краткое описание класса в Заготовке программы. Добавьте в функцию main приложения инструкции, обеспечивающие вызов этой дружественной функции. Поясните назначение дружественных функций и выигрыш от их использования. Отладьте полученное приложение. 6. В классе VECTOR переопределите операцию умножения. Переопределенная операция умножения должна выполнять скалярное произведение векторов. Напишите функцию main, которая проиллюстрирует работу переопределенных операций умножения. Отладьте полученное приложение. 7. В классе VECTOR переопределите операции вставки для консольного и файлового вывода и ввода вектора. См. Заготовку программы. 8. По аналогии с пунктами 3, 4, 6 для класса VECTOR выполните для класса MATRIX следующие задания. и отладьте полученное приложение: 1) Добавьте в класс MATRIX конструктор копирования. 2) В классе MATRIX переопределите операцию присваивания. 3) В классе MATRIX переопределите операцию умножения. Переопределенная операция умножения должна выполнять умножение двух матриц по правилам линейной алгебры. В функцию main добавьте операторы, тестирующие добавления этого пункта. Отладьте полученное приложение. 9. Отчет по семинару 3 должен содержать: 1) Условие индивидуальной задачи. 2) Словесное описание элементов классов. 3) Программный код приложения с ПОДРОБНЫМИ КОММЕНТАРИЯМИ, причем особое внимание следует обратить на комментарии к добавленным в семинаре 3 фрагментам кода, в том числе к инструкциям функции main. 4) Тесты. 5) Ответы на вопросы, список которых приведен ниже. Вопросы 1. Что такое дружественная функция? В чем состоит выигрыш от применения дружественных функций? 2. В каких случаях в классе должен быть конструктор копирования? При выполнении каких инструкций вызывается конструктор копирования? 3. В каких случаях в классе должна быть переопределена операция присваивания? При выполнении каких инструкций вызывается переопределенная операция присваивания? 4. Как будет выполняться умножение над экземплярами классов MATRIX и VECTOR, если операцию умножение не переопределять?Показать/скрыть дополнительное описание
Данное задание делается на основе задания КМ-2 , вариант 7.
Даны матрицы A (4×4), B (5×5), C (3×3). Вычислить значение выражения (PA + PB) * PC, где PA, PB, PC — произведение положительных элементов матрицы A, B, C, стоящих выше главной диагонали.
Условия для задания КМ-4:
1. Задание 1. Новые элементы добавляются в приложение обработки матриц семинара 1 (приложение с одним классом, без класса-наследника). Найдите или восстановите это приложение. Класс, имеющийся в этом приложении, будем называть MATRIX. Результаты выполнения следующих пунктов 2-7 задания можно посмотреть в «Заготовке примера приложения» (параграф 2, следующий после Задания). 2. Добавьте в приложение класс VECTOR для обработки векторов. Минимальный набор полей класса VECTOR: длина вектора и указатель на его начало. Минимальный набор методов класса VECTOR: конструктор, деструктор, ввод элементов вектора, вывод элементов вектора. 3. Добавьте в класс VECTOR конструктор копирования. Добавьте в функцию main инструкции, обеспечивающие вызов этих конструкторов копирования. Отладьте полученное приложение. Ответьте на вопросы: в каких случаях в классе должен быть конструктор копирования? При выполнении каких инструкций вызывается конструктор копирования? 4. В классе VECTOR переопределите операцию присваивания. Ответьте на вопрос: в каких ситуациях будет работать переопределенная операция присваивания? Напишите функцию main, которая проиллюстрирует работу переопределенных операций присваивания. Отладьте полученное приложение. 5. Напишите функцию умножения матрицы на вектор, дружественную для обоих классов MATRIX и VECTOR. Обратите внимание, что прототип этой функции должен присутствовать в обоих классах, поэтому описанию класса MATRIX должно быть доступно описание класса VECTOR, а описанию класса VECTOR должно быть доступно описание класса MATRIX. Посмотрите, как для разрешения этой «цикличности» используется краткое описание класса в Заготовке программы. Добавьте в функцию main приложения инструкции, обеспечивающие вызов этой дружественной функции. Поясните назначение дружественных функций и выигрыш от их использования. Отладьте полученное приложение. 6. В классе VECTOR переопределите операцию умножения. Переопределенная операция умножения должна выполнять скалярное произведение векторов. Напишите функцию main, которая проиллюстрирует работу переопределенных операций умножения. Отладьте полученное приложение. 7. В классе VECTOR переопределите операции вставки для консольного и файлового вывода и ввода вектора. См. Заготовку программы. 8. По аналогии с пунктами 3, 4, 6 для класса VECTOR выполните для класса MATRIX следующие задания. и отладьте полученное приложение: 1) Добавьте в класс MATRIX конструктор копирования. 2) В классе MATRIX переопределите операцию присваивания. 3) В классе MATRIX переопределите операцию умножения. Переопределенная операция умножения должна выполнять умножение двух матриц по правилам линейной алгебры. В функцию main добавьте операторы, тестирующие добавления этого пункта. Отладьте полученное приложение. 9. Отчет по семинару 3 должен содержать: 1) Условие индивидуальной задачи. 2) Словесное описание элементов классов. 3) Программный код приложения с ПОДРОБНЫМИ КОММЕНТАРИЯМИ, причем особое внимание следует обратить на комментарии к добавленным в семинаре 3 фрагментам кода, в том числе к инструкциям функции main. 4) Тесты. 5) Ответы на вопросы, список которых приведен ниже. Вопросы 1. Что такое дружественная функция? В чем состоит выигрыш от применения дружественных функций? 2. В каких случаях в классе должен быть конструктор копирования? При выполнении каких инструкций вызывается конструктор копирования? 3. В каких случаях в классе должна быть переопределена операция присваивания? При выполнении каких инструкций вызывается переопределенная операция присваивания? 4. Как будет выполняться умножение над экземплярами классов MATRIX и VECTOR, если операцию умножение не переопределять?Показать/скрыть дополнительное описание
Объектно-ориентированное программирование - КМ-4. Более сложные элементы. Контрольная работа.
Характеристики решённой задачи
Учебное заведение
Номер задания
Вариант
Программы
Просмотров
1
Качество
Идеальное компьютерное
Размер
20,62 Mb
Список файлов
Seminar3var7
Seminar3var7
FileContentIndex
0cf1f570-dc66-4cea-94cf-8bf532379736.vsidx
64cb3124-8c69-40b2-b1d9-d004a3cb7df9.vsidx
v17
ipch
AutoPCH
1b6fe07c6b3467a8
MAIN.ipch
1372f2808cd1fa6
MAIN.ipch
.suo
DocumentLayout.json
Seminar3var7
x64
Debug
Seminar3var7
CL.command.1.tlog
CL.read.1.tlog
CL.write.1.tlog
Cl.items.tlog
Seminar3var7.lastbuildstate
link.command.1.tlog
link.read.1.tlog
link.secondary.1.tlog
link.write.1.tlog
Seminar3var7.exe.recipe
Seminar3var7.ilk
Алёна Руденко