最好的話,可以注釋一下,不然看不懂

下面是我的代碼
/*
實作矩陣的逆求解
實作矩陣的行列式運算
實作AK=b求解操作
1求矩陣的秩
*/
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdlib>
using namespace std;
class Matrix{//二維矩陣類
private:
double **A;
int row;
int col;
void initMatrix();//給矩陣分配空間
public:
Matrix(int m,int n);//建構式
Matrix(int m,int n,double *a);//建構式
~Matrix();//解構式
Matrix &operator=(const Matrix &);
void show();//輸出矩陣
};
//分配空間
void Matrix::initMatrix(){
A=new double*[row];
for(int i=0;i<row;i++){
A[i]=new double[col];
}
}
//建構式
Matrix::Matrix(int m,int n){
row=m;
col=n;
initMatrix();
for(int i=0;i<row;i++){//全部置零
for(int j=0;j<col;j++)
A[i][j]=0;
}
}
//建構式
Matrix::Matrix(int m,int n,double *a){
row=m;
col=n;
initMatrix();
for(int i=0;i<row;i++){//用陣列a初始化
for(int j=0;j<col;j++)
A[i][j]=*(a+i*col+j);
}
}
void Matrix::show(){
cout<<"\n矩陣為:\n";
for(int i=0;i<row;i++){
for(int j=0;j<col;j++)
cout<<setw(6)<<this->A[i][j];
cout<<"\n";
}
}
//解構式
Matrix::~Matrix(){
for(int i=0;i<row;++i) {
delete[] A[i];
}
delete[] A;
}
//實作矩陣的復制
Matrix &Matrix::operator=(const Matrix &m){
if(this==&m) {
return *this;
}
if(row!=m.row || col!= m.col) {
for(int i=0;i<row;++i) {
delete[] A[i];
}
delete[] A;
row= m.row;
col= m.col;
initMatrix();
}
for (int i=0;i<row;i++) {
for (int j=0;j<col;j++) {
A[i][j]=m.A[i][j];
}
}
return *this;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237341.html
標籤:C++ 語言
上一篇:C++流迭代器讀寫檔案問題
下一篇:找錯
