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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LeeZa
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 43
#1

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

25.11.2013, 02:34. Просмотров 161. Ответов 0
Метки нет (Все метки)

Создаю класс матрицы, перегружаю операторы. Но...

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();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 02:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов для матрицы (C++):

Матрицы - перегрузка операторов >> и << - C++
Здравствуйте! Помогите, пожалуйста. Компилятор ругается на мою попытку перегрузить операторы ввода и вывода. Не знаю как исправить,...

Классы, матрицы, перегрузка операторов, дружественные функции - C++
Гляньте пожалуйста, как получилось сделать задание, что неверно: Создать класс, в котором перегрузить операторы: &amp; для...

Перегрузка операторов для контейнера - C++
Доброго времени суток. Просматривая STL, в ветке вектора наткнулся на такую интересную запись: vector&lt;int&gt; v1 = {45,85,68}; ...

Перегрузка операторов для списков - C++
Как сделать перегрузку оператора умножить (оператор возвращает адрес первого элемента списка нового списка, который содержит общие элементы...

Перегрузка операторов не для объектов - C++
Можно ли так делать? Потому что в таком случае вызывается не мой оператор, а исключающее или, стандарнтое. Как и что сделать, чтобы...

Перегрузка операторов для list - C++
Как перегрузить операторы вывода в поток и доступа по индексу для list?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 02:34
Привет! Вот еще темы с ответами:

Перегрузка операторов для класса - C++
class A { private: size_t i; public: size_t i_get() { return i; } };

Перегрузка операторов для классов - C++
Определить класс описывающий вектор в пространстве. Для класса перегрузить префиксный унарный оператор. Написать программу в которой...

Перегрузка операторов для класса матриц - C++
Собственно, суть проблемы. Пишу класс матриц (хочется), оператор присваивания работает только тогда, когда функция (ну или, например,...

Перегрузка операторов для класса треугольника - C++
Дан класс Треугольник, включающий в себя закрытые поля для сторон и медиан. Указать все необходимые функции инициализации и доступа к...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru