Для студентов ИДДО НИУ «МЭИ» по предмету Объектно-ориентированное программирование (ООП)Более сложные элементы. Контрольная работаБолее сложные элементы. Контрольная работа
2025-06-022025-06-02СтудИзба
Курс Объектно-ориентированное программирование - КМ-2. Разработка простейших консольных программ с использованием ООП. Контрольная работа
Новинка
Описание
Курс Объектно-ориентированное программирование - КМ-4. Более сложные элементы. Контрольная работа. Работа сдана на оценку 5.
Данное задание основывается на задании КМ-2. Вариант 9.
Проверить, есть ли среди элементов главной диагонали матрицы A (5×5) отрицательные элементы, а среди элементов главной диагонали матрицы B (3×3) — элементы, меньшие 2,7
Само здание КМ-4:
1. Задание 1. Новые элементы добавляются в приложение обработки матриц семинара 1 (ВАРИАНТ 9) (приложение с одним классом, без класса-наследника). Найдите или восстановите это приложение. Класс, имеющийся в этом приложении, будем называть 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. Вариант 9.
Проверить, есть ли среди элементов главной диагонали матрицы A (5×5) отрицательные элементы, а среди элементов главной диагонали матрицы B (3×3) — элементы, меньшие 2,7
Само здание КМ-4:
1. Задание 1. Новые элементы добавляются в приложение обработки матриц семинара 1 (ВАРИАНТ 9) (приложение с одним классом, без класса-наследника). Найдите или восстановите это приложение. Класс, имеющийся в этом приложении, будем называть 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. Разработка простейших консольных программ с использованием ООП. Контрольная работа.
Характеристики решённой задачи
Учебное заведение
Номер задания
Программы
Просмотров
1
Качество
Идеальное компьютерное
Размер
86,51 Kb
Список файлов
Объектно-ориентированное программирование
Matrix9ExtExt
Matrix9ExtExt
x64
Debug
x64
Debug
Пример.png
Matrix9ExtExt.sln
Matrix9ExtExt.vcxproj
Matrix9ExtExt.vcxproj.filters
Matrix9ExtExt.vcxproj.user
main.cpp
vector_out.txt
Объектно-ориентированное программирование.docx
Алёна Руденко