Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов для матрицы - C++

Восстановить пароль Регистрация
 
LeeZa
 Аватар для LeeZa
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 43
25.11.2013, 02:34     Перегрузка операторов для матрицы #1
Создаю класс матрицы, перегружаю операторы. Но...

Matrix& Matrix::operator=(Matrix t)
и
Matrix& Matrix::operator *= (const Matrix &rhs)

...не хотят работать как надо. Не понимаю, в чем дело.


#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>
using namespace std;

class Matrix { public:
int i, j, N, M;
int Mat[100][100];

void FillMatrix()
{cout << "Vvedite razmer matrix=> Kol-vo strok: " ;
cin >> N;
cout << "Vvedite razmer matrix=> Kol-vo stolbtsov: " ;
cin >> M;

for (i=0; i < N; i++)
{
for (j=0; j < M; j++)
{
cout << "M["<< i <<"]["<< j <<"]=" ;
cin >> Mat[i][j];
}
}
}

void ShowMatrix()
{
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
{
cout << " M["<< i <<"]["<< j <<"] = " << Mat[i][j] ;
} cout << "\n";
}
}

//===========================================
Matrix Matrix::operator+(const Matrix &rhs)
{
Matrix result(*this);
for (size_t i = 0; i < N; i++)
{
for (size_t j = 0; j < M; j++)
{
result.Mat[i][j] += rhs.Mat[i][j];
}
}
return result;
}

Matrix Matrix::operator-(const Matrix &rhs)
{
Matrix result(*this);

for (size_t i = 0; i < N; ++i)
{
for (size_t j = 0; j < M; ++j)
result.Mat[i][j] -= rhs.Mat[i][j];
}

return result;}


Matrix& Matrix::operator=(Matrix t)
{

for (size_t i = 0; i < N; ++i)
{
for (size_t j = 0; j < M; ++j)

Mat[i][j] = t.Mat[i][j];
}
return *this;
}


Matrix& Matrix::operator *= (const Matrix &rhs)
{
Matrix result(*this);
for (i=0; i<N; i++)
{ for (j=0; j<M; j++)
{
result.Mat[i][j]=0;
for (size_t i = 0; i < N; ++i)
{
for (size_t j = 0; j < M; ++j)
result.Mat[i][j]=0;
{for (size_t k =0; k < N; ++k)
result.Mat[i][j] += result.Mat[i][k]*rhs.Mat[k][j];
}
}
}}
return *this;}


Matrix Matrix::operator += (const Matrix &rhs)
{
for (size_t i = 0; i < N; ++i)
{
for (size_t j = 0; j < M; ++j)
Mat[i][j] += rhs.Mat[i][j];
}

return *this;}

Matrix Matrix::operator -= (const Matrix &rhs)
{
for (size_t i = 0; i < N; ++i)
{
for (size_t j = 0; j < M; ++j)
Mat[i][j] -= rhs.Mat[i][j];
}

return *this;}

//===========================================
//-----------------------------------
private:
Matrix *create(int a)
{Matrix *x;
x=new Matrix[a];
return x;
}
//-----------------------------------

};


void main ()
{

Matrix m, m2, slojenie, vichitanie, ravno;
cout << "Vvod 1: \n";
m.FillMatrix();
cout << "Vivod 1: \n";
m.ShowMatrix();
cout << "Vvod 2: \n";
m2.FillMatrix();
cout << "Vivod 2: \n";
m2.ShowMatrix();

slojenie = (m + m2);
cout << "\n-----------------------------------------\n";
cout << " Vivod slojeniea \n";
slojenie.ShowMatrix();

vichitanie = (m2 - m);
cout << " Vivod vichitanie \n";
vichitanie.ShowMatrix();

m *= m2;
cout << " Vivod peremnojeniea \n";
m.ShowMatrix();

m += m2;
cout << "Prisvaivanie so slojeniem \n";
m.ShowMatrix();

m -= m2;
cout << "Prisvaivanie s vichitaniem \n";
m.ShowMatrix();

m2 = m;
cout << " Vivod result \n";
m2.ShowMatrix();

getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 02:34     Перегрузка операторов для матрицы
Посмотрите здесь:

Перегрузка операторов для классов C++
C++ Перегрузка операторов для класса треугольника
C++ “Перегрузка операторов для классов
C++ Перегрузка операторов для list
C++ перегрузка операторов для наследованных классов
классы, матрицы, перегрузка операторов,дружественные функции C++
C++ Перегрузка операторов не для объектов
Перегрузка операторов для класса polynom C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 07:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru