Инкапсуляция объектов линейной алгебры в классе, и перегрузка стандартных операций для них на языке C++
Автор: jyrth • Сентябрь 27, 2021 • Лабораторная работа • 610 Слов (3 Страниц) • 414 Просмотры
[pic 1]
- ЛАБОРАТОРНАЯ РАБОТА №2
- ЦЕЛЬ РАБОТЫ
Целью лабораторной работы №2 «Инкапсуляция объ- ектов линейной алгебры в классе, и перегрузка стандарт- ных операций для них на языке C++» является освоение методов использования динамической памяти, изучение свойства полиморфизма, реализуемого перегрузкой функ- ций и операций в классах C++.
- ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ
Составить описание класса для объектов прямоуголь- ных матриц, задаваемых массивом вещественных чисел типа double, располагающегося в памяти по строкам. Ком- поненты матрицы должны быть скрыты (инкапсулирова- ны) в объекте.
Предусмотреть применение конструкторов: а) по умолчанию;
б) для инициализации квадратной матрицы заданного размера с заданными компонентами;
в) для инициализации прямоугольной матрицы за- данных размеров с заданными компонентами;
г) копирования.
Можно использовать параметры по умолчанию для сокращения количества конструкторов.
Конструкторы должны создавать объекты в динами- ческой памяти (оператор new), а деструктор – освобождать память (оператор delete).
Способ размещения объекта в динамической памяти (в виде одномерного или двумерного динамического мас- сива, либо комбинированный вариант – одномерный мас- сив с массивом указателей на начало каждой строки мат- рицы) выбрать самостоятельно. Все эти способы имеют как достоинства, так и недостатки.
Организовать в конструкторах и деструкторе вывод на экран информационных сообщений, например, «Кон- структор 1», «Деструктор» и т.д.
- С помощью функций-элементов класса обеспе- чить:
- проверку возможности умножения двух матриц;
- проверку возможности сложения двух матриц;
- максимального элемента матрицы;
- минимального элемента матрицы.
- С помощью операторов-элементов класса обеспе- чить:
- доступ к элементам матрицы по индексу строки и столбца (чтение/запись), т.е. переопределить оператор [];
- вывод на экран матрицы в построчной форме, т.е. переопределить оператор вывода на поток <<;
- математические действия над матрицами A и B без получения новых матриц, т.е. переопределить операторы
а) A = B; б) A += B; в) A –= B; г) A *= B;
д) а также A *= k – умножение матрицы на ска- ляр.
- C помощью внешних операторов обеспечить дву- местные операции над матрицами A и B с получе- нием новой матрицы C:
- сложение (C = A + B);
- вычитание (C = A – B);
- произведение (С = A * B);
- умножение матрицы на скаляр (С = A * k).
Выполнению операций сложения, вычитания и умножения матриц должна предшествовать проверка воз- можности их выполнения над данными объектами.
УКАЗАНИЕ: Для выравнивания позиций при выводе матрицы на экран можно использовать функции- манипуляторы потока (библиотека iomanip.h) либо функ- ции-элементы (методы) класса ostream (библиотека iostream.h) (табл. 2.1).
...