Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
28.06.2014
Размер:
2.64 Кб
Скачать
// Создание простого класса
// sclass_methods.h - Процедуры и конструкторы

// Деструктор:
Matrix::~Matrix() { cout << "Destructed\n"; }

// Конструктор умолчания:
Matrix::Matrix(int prow, int pcol)
{
int i, j;
col = pcol; row = prow;
for (i=0; i < prow; i++)
for (j=0; j < pcol; j++)
matr[i][j] = 0;
}

// Конструктор копирования:
Matrix::Matrix(const Matrix &m, int number)
{
int i, j;
col = m.col; row = m.row;
for (i=0; i < row; i++)
for (j=0; j < col; j++)
matr[i][j] = m.matr[i][j] + number;
}

// Конструктор преобразования:
int Matrix::MatrixI( int ch)
{
int i;
if (row < col)
for (i=0; i < row; i++)
matr[i][i] = ch;
else
for (i=0; i < col; i++)
matr[i][i] = ch;
return 0;
}

// Вывод матрицы на экран:
void Matrix::show() const
{
int i, j;
for(i=0; i < row; i++)
{
for (j=0; j < col; j++)
printf("%i ", matr[i][j]);
printf("\n");
}
}

// Преобразование типа double:
double Matrix::matrix_to_double()
{
int i, j, sum = 0;
double mid;
for (i=0; i < row; i++)
for (j=0; j < col; j++)
sum += matr[i][j];
mid = (double)sum / (row * col);
return mid;
}


//Операторы
Matrix Matrix::operator + (const Matrix &M) const
{
int i, j;
if ((M.col != col) || (M.row != row))
{
cout << "Raznye razmernosti matrits\n";
return 0;
}
Matrix sum(row, col);
for (i=0; i < row; i++)
for (j=0; j < col; j++)
sum.matr[i][j] = M.matr[i][j] + matr[i][j];
return sum;
}


Matrix Matrix::operator - (const Matrix &M) const
{
int i, j;
if ((M.col != col) || (M.row != row))
{
cout << "Raznye razmernosti matrits\n";
return 0;
}
Matrix sum(row, col);
for (i=0; i < row; i++)
for (j=0; j < col; j++)
sum.matr[i][j] = matr[i][j] - M.matr[i][j];
return sum;
}

int Matrix::operator += (int ch){
int i, j;
for (i=0; i < row; i++)
for (j=0; j < col; j++)
matr[i][j] += ch;

}

Matrix Matrix::operator = (const Matrix &M)
{
int i, j;
for (i=0; i < row; i++)
for (j=0; j < col; j++)
matr[i][j] = M.matr[i][j];
return *this;
}

int Matrix::operator == (const Matrix &M)
{
int is_equal = 1, i = 0, j = 0;
if ((M.col != col) || (M.row != row)) return 0;
while (is_equal && (i < col))
{
while (is_equal && (j < row))
{
is_equal = (matr[i][j] == M.matr[i][j]);
j++;
}
j = 0;
i++;
}
return is_equal;
}

int* Matrix:: operator [] (const int i)
{
if ((i<col) && (i>=0)) {
return (matr[i]);
}
}
Соседние файлы в папке laba10