Skip to content
This repository has been archived by the owner on Jan 10, 2023. It is now read-only.

🧮 A class for working with matrixes in C++ [👮‍♀️ Recipient: Khrostovsky Andrey]

Notifications You must be signed in to change notification settings

xitowzys-assistant/Matrix-Class

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Итоговое зачетное задание

  1. Разработать класс-шаблон, поддерживающий модель «Матрица» произвольных размеров (не только квадратных), позволяющий создавать объекты на базе всех числовых системных типов данных. В классе необходимо предусмотреть следующие свойства и методы (не запрещено добавлять дополнительные, при необходимости реализации вашей творческой идеи):
  • Конструктор с параметрами, задающими размерность (или размерности, в случае с неквадратной матрицей), число заполнитель матрицы. Все операции по выделению памяти для динамических двумерных массивов, должны выполняться с проверками на правильность и допустимость выполнения операций!

Отсутствие таковых в этом и дальнейших пунктах – приводит к снижению оценки за задание в целом!

  • Деструктор, проверяющий существование указателя на динамический массив, и производящий безопасное освобождение памяти.

  • Перегруженные операторы индексации, сравнения матриц (равенство означает полное совпадение всех параметров и значений поэлементно, но не указателя на область памяти!), сложения, умножения матриц (с соответствующими проверками!!!), а также присваивания (выполняется поэлементно)

  • Методы поиска максимального и минимального элементов в матрице, с возвращением указателя на найденный элемент (если их несколько, то на первый обнаруженный)

  • Методы вычисления ранга матрицы, ее определителя (если матрица квадратная, в противном случае возвращать число -999333)

  • Метод Транспонирования (метод должен либо транспонировать исходную матрицу объекта, либо возвращать временный объект, чтобы его можно было присвоить другому объекту, с помощью оператора присваивания – который перегружен) с параметром, определяющим, менять исходную матрицу или возвратить временный объект для присваивания другому объекту.

  • Метод вычисления обратной матрицы.

  • Метод, приводящий матрицу верхнему диагональному виду (с учетом и проверкой возможности такого приведения, используя ранг матрицы!)

  1. Создать класс, реализующий модель системы линейных уравнений (далее – СЛУ), в матричном виде. Класс может быть унаследован от класса из 2.1, либо содержать необходимые объекты внутри себя – в любом случае, обязательно обосновать выбор применения того или иного подхода. Класс должен обеспечивать:
  • Задание размерностей СЛУ (число неизвестных, и число самих уравнений) – с проверкой допустимости значений.
  • Заполнение всех матриц коэффициентов и вектора правой части системы.
  • С помощью методов матричных операций из 2.1 – выполнять поиск решения СЛУ (методом Гаусса), опять же, используя матричные методы из 2.1.
  • В Случае (используйте метод вычисления рангов матриц!) несовместности СЛУ, предупредить пользователя об отсутствии решений.

Особое внимание при проверке будет уделяться контролю безопасности работы с данными, проверке значений и отсутствие двусмысленности при работе методов, исключений различных ситуаций при которых система придет в нефункциональное состояние.

Проект должен быть выполнен из двух частей:

  1. Проект, с самим программным кодом (комментарии элементов кода и алгоритмов обязательны) для возможности проверки отладки и демонстрации работы
  2. Документация, с описанием выбранных типов данных, классов, реализации ключевых методов (указанных в задании) и алгоритмов, описание типовых операций, и т.д.
    Документация оформляется как иллюстрированный документ *.docx. Обязательно указание автора проекта, и уникальных особенностей программы.

При разработке проекта можно пользоваться наработками, которые уже были проверены и отлажены на лабораторных занятиях.

Желаю удачи!!!)

About

🧮 A class for working with matrixes in C++ [👮‍♀️ Recipient: Khrostovsky Andrey]

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages