⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix1.h

📁 是一本教程的实例代码,可以下载后直接运行,即可以得到答案.
💻 H
字号:
#include <iostream.h>

class Matrix1                                  //顺序存储结构的矩阵类
{
private:
    int n;                                     //矩阵的阶数
    int *table;                                //一维数组指针

public:
    Matrix1(int n=0);                          //构造空矩阵对象,数据元素全为0
    Matrix1(int mat1[],int n);                 //以一维数组构造矩阵对象
    Matrix1(Matrix1 &mat1);                    //以已知对象构造矩阵对象
    ~Matrix1();                                //析构函数

    int get(int i,int j);                      //获得矩阵的数据元素
    bool set(int i,int j,int k);               //设置矩阵的数据元素

    friend ostream& operator<<(ostream& ostr,Matrix1 &mat);
                                               //输出流运算符重载
    Matrix1& operator=(Matrix1 &mat1);         //赋值运算符重载
    Matrix1& operator+=(Matrix1 &mat2);        //加法运算符重载
    Matrix1 operator+(Matrix1 &mat2);          //加法运算符重载
};

Matrix1::Matrix1(int n)                        //构造空矩阵对象,数据元素全为0
{
    this->n=n;
    this->table=NULL;
    if(n>0)
    {
        table=new int[n*n];                    //为矩阵分配n*n个存储单元
        for(int i=0;i<n*n;i++)
            table[i]=0;
    }
}

Matrix1::Matrix1(int mat1[],int n)              //以一维数组构造矩阵对象
{    //将一维数组mat1中的元素按行优先的方式存储在矩阵对象的一维数组table中
    if(n>0 && mat1!=NULL)
    {
        this->n=n;
        table=new int[n*n];
        for(int i=0;i<n*n;i++)
            table[i]=mat1[i];
    }
}

Matrix1::Matrix1(Matrix1 &mat1)                //以已知对象构造矩阵对象
{
    n=mat1.n;
    table=new int[n*n];
    for(int i=0;i<n*n;i++)
        table[i]=mat1.table[i];
}

Matrix1::~Matrix1()                            //析构函数
{
    delete[] table;
    n=0;
}

int Matrix1::get(int i,int j)                  //返回矩阵第i行第j列的数据元素
{                                              //1≤i≤n,1≤j≤n
    if(i>=1 && i<=n && j>=1 && j<=n) 
        return *(table+(i-1)*n+j-1);
    else
        return -32767;
}

bool Matrix1::set(int i,int j,int k)           //设置矩阵第i行第j列的数据元素为k
{                                              //1≤i≤n,1≤j≤n
    if(i>=1 && i<=n && j>=1 && j<=n) 
    {
        *(table+(i-1)*n+j-1)=k;
        return true;
    }
    return false;
}

ostream& operator<<(ostream& out,Matrix1 &mat) //输出矩阵对象各元素值
{
    cout<<"矩阵:"<<endl;
	if(mat.n>0)
    for(int i=1;i<=mat.n;i++)
    {
        for(int j=1;j<=mat.n;j++)
            out<<mat.get(i,j)<<"  ";
        cout<<endl;
    }
    return out;
}

Matrix1& Matrix1::operator=(Matrix1 &mat1)     //矩阵赋值运算
{                                              //*this=mat1
    delete []table;
    n=mat1.n;
    table=new int[n*n];
    for(int i=0;i<n*n;i++)
        table[i]=mat1.table[i];
    return *this;
}

Matrix1& Matrix1::operator+=(Matrix1 &mat2)    //矩阵相加运算
{                                              //*this+=mat2
    for(int i=0;i<n*n;i++)
        table[i]=table[i]+mat2.table[i];
    return *this;
}

Matrix1 Matrix1::operator+(Matrix1 &mat2)      //矩阵相加运算
{                                              //mat3=*this+mat2
    Matrix1 mat3=*this;
    mat3+=mat2;
    return mat3;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -