?? 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 + -