Създаване на матричен клас

Създаване на матричен клас (практика).

Работата с матрици е изключително често срещана задача, пред която са изправени студентите по програмиране. Тук се опитах да подредя това, като цяло, не е трудно, но изискващо разбиране задача. И така: напишете класа на матрицата.

Например, нека вземем следния проблем: има матрица NxN, в която трябва да намерите разликата между максималния и минималния елемент във всеки ред.

Нека създадем заглавния файл matrix.h. Той ще съдържа описанието на матричния клас (обичайната практика за разделяне на описанието и тялото на класа, използвано за допълнително включване на заглавния файл в други програми на проекта) и matrix.cpp, тялото на класа ще бъде добавен към него.

Веднага трябва да разберете, че тук се създава обектът "матрица". Този обект има някои свойства и някои методи, чрез които можете да работите с обекта.

Първо, нека напишем файла matrix.h. В него ще опишем всичко, което е необходимо, за да работи класът.

#pragma веднъж // необходимо за компилатора
// обработва файла само веднъж

class CMatrixStr // нека наречем нашата матрица така

Какво характеризира матрицата? Брой колони и брой редове. Това са вътрешни данни, така че ще ги дефинираме в областта за вътрешна употреба.

частно:
int Редове; // редове
int Cols; // колони

За съхранение на данни ви е необходима памет. в C ++ динамичната памет се разпределя в блокове, след което използваме масив от указатели към блокове памет, за да емулираме достъпа, т.е. указател към указател. Ще съхраняваме плаващи данни

Защото за нашата задача е необходимо да намерим минималните и максималните стойности и да работим по-нататък с тези стойности (получаване на разликата), тогава за тях ще оставим от показалеца.

float * DataMin;
float * DataMax;

Тук вътрешните данни свършват и ние продължаваме да работим с методите.

публично:
CMatrixStr (int Row = 1, int Col = 1); // конструктор

За да зададете и прочетете един елемент:

float GetAt (int Row, int Col); // получавам
void SetAt (int Row, int Col, float Data); // пиша

По-лесно е обаче да попълните всички елементи наведнъж:

И накрая, трябва да намерите минималните и максималните стойности: