📄 matrix.cpp
字号:
#include <new>
#include <cstdlib>
#include <iostream>
using namespace std;
#include "Matrix.h"
Matrix::Matrix( int r, int c )
: row( r ), col( c )
{
ptr = new int[ row * col ];
for ( int i = 0; i < row; i++ )
for ( int j = 0; j < col; j++ )
ptr[ i * col + j ] = 0;
}
Matrix::Matrix( const Matrix &mat )
{
ptr = new int[ mat.col * mat.row ];
row = mat.row;
col = mat.col;
for ( int i = 0; i < row; i++ )
for ( int j = 0; j < col; j++ )
ptr[ i * col + j ] = mat.getelem( i, j );
}
Matrix::~Matrix()
{
delete [] ptr;
}
int Matrix::getc()
{
return col;
}
int Matrix::getr()
{
return row;
}
int Matrix::gete( int r, int c )
{
if( r >= row || r < 0 || c >= col || c < 0 )
{
cout << "Error: Subscript overbuf!";
exit( 1 );
}
return ptr[ r * col + c ];
}
void Matrix::sete( int r, int c, int elem )
{
if( r >= row || r < 0 || c >= col || c < 0 )
{
cout << "Error: Subscript overbuf!";
exit( 1 );
}
ptr[ r * col + c ] = elem;
}
void Matrix::subtract( const Matrix &mat )
{
for ( int i = 0; i < row; i++ )
for ( int j = 0; j < col; j++ )
ptr[ i * col + j ] -= mat.ptr[ i * col + j ];
}
void Matrix::add( const Matrix &mat )
{
for ( int i = 0; i < row; i++ )
for ( int j = 0; j < col; j++ )
ptr[ i * col + j ] += mat.ptr[ i * col + j ];
}
bool Matrix::equals( const Matrix &mat )
{
for ( int i = 0; i < row; i++ )
for ( int j = 0; j < col; j++ )
if( ptr[ i * col + j ] != mat.ptr[ i * col + j ] )
return false;
return true;
}
Matrix &Matrix::operator=( const Matrix &mat )
{
if ( this != &mat )
{
if ( col != 0 && row != 0 )
delete [] ptr;
row = mat.row;
col = mat.col;
ptr = new int [ row * col ];
for ( int i = 0; i < row; i++ )
for ( int j = 0; j < col; j++ )
ptr[ i * col + j ] = mat.getelem( i, j );
}
return *this;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -