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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Двумерный массив по ссылке http://www.cyberforum.ru/cpp-beginners/thread1018049.html
Скажите, пожалуйста, что я не так делаю? Есть функция - на вход ей дается двумерный массив, который она должна изменить: string takingFirstLine(int sizeOfMyArray, int *game, string firstLine) { int index; // Для запоминания номера символа, где пробел (Для substr) bool enter=0; // Для считывания имени один раз int i,j=0; string nameOfFirstTeam; // Разбираем первую...
C++ Builder Решение нелинейного уравнения методом хорд //--------------------------------------------------------------------------- #include <vcl.h> #include <math.h> #include <Math.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) http://www.cyberforum.ru/cpp-beginners/thread1018047.html
Вывод максимального и минимального значения C++
Что не так? Выводит: 8 9 Максимальное значение 8004304 Минимальное значение 8 #include <iostream> #include <string> using namespace std; int main ()
C++ Поразрядная конъюнкция / Дизъюнкция / Исключающие, (&), (|), (^)
... cout << "\n 6 & 5 = " << (6 & 5); cout << "\n 6 | 5 = " << (6 | 5); cout << "\n 6 ^ 5 = " << (6 ^ 5); ... Результат:
C++ Найти номера всех максимальных элементов массива http://www.cyberforum.ru/cpp-beginners/thread1018023.html
Дан массив а, состоящий из n целых чисел (n<=100). Найти номера всех максимальных элементов массива. за помощь спасибо)
C++ Матрицы,нахождение максимального и минимального элемента Здравствуйте!Помогите пожалуйста с программой,по условию нужно найти максимальный и минимальный элемент матрицы и разместить их на первом и последнем месте строки соответственно,а как их поместить на первое и последнее место строки не могу понять. Вот код(нахождение max и min элемента): #include <iostream.h> #include <stdio.h> #include <conio.h> int main() { int n ,min,max,i,j; for (int... подробнее

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

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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru