Операции с матрицами в C++

Путем перегрузки базовых операторов существенно упрощается процесс работы с такими математическими структурами, как матрицы. Здесь созда­дим специальный программный код, в котором предусмотрим возможность выполнять некоторые наиболее простые операции с матрицами, а именно складывать матрицы и умножать их. Более точно, решим следующие зада­чи. Создадим класс для работы с квадратными матрицами. Элементы ма­трицы реализуются в виде двумерного массива-поля класса. Перегрузим оператор [ ] так, чтобы можно было индексировать объекты - только те­перь используется два индекса, поскольку соответствующее поле объекта является двумерным массивом. Для вычисления суммы матриц перегрузим оператор сложения, а для вычисления произведения матриц перегрузим оператор умножения. Программный код приведен примере.
#include 
using namespace std;
//Размер квадратной матрицы:
const int n=3;
//Класс для реализации матриц:
class Matrix{
public:
//Поле - двумерный массив:
int matr[n][n];
//Перегрузка оператора []:
int *operator[](int k){
return matr[k];}
//Перегрузка оператора сложения +:
Matrix operator+(Matrix obj){
Matrix tmp(0);
for(int i=0; i < n; i++)
 for(int j=0; j < n; j++)
 tmp[i][j]=matr[i][j]+obj[i][j];
return tmp;}
//Перегрузка оператора умножения *:
Matrix operator*(Matrix obj){
Matrix tmp(0);
for(int i=0; i < n; i++)
 for(int j=0; j < n; j++)
 for(int k=0; k < n; k++)
 tmp[i][j]+=matr[i][k]*obj[k][j];
return tmp;}
//Метод для отображения значений матрицы:
void show(){
for(int i=0; i < n; i++){
 for(int j=0; j < n; j++){
 printf("%3d",matr[i][j]);
 }
 cout << endl;
}
}
//Конструктор с аргументом:
Matrix(int k){
for(int i=0; i < n; i++)
 for(int j=0; j < n; j++)
 matr[i][j]=k;
}
//Конструктор с аргументом:
Matrix(){
for(int i=0; i < n; i++)
 for(int j=0; j < n; j++)
 matr[i][j]=rand()%5-2;
}
};
int main(){
//Создание объектов:
Matrix A,B,C(0),D(0);
cout << "Matrix A:\n";
A.show();
cout << "Matrix B:\n";
B.show();
//Сумма матриц:
cout << "Matrix C=A+B:\n";
C=A+B;
C.show();
//Произведение матриц:
cout << "Matrix D=A*B:\n";
D=A*B;
D.show();
return 0;}
Онлайн всего: 58
Гостей: 58
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте