我爱我的祖国合唱:矩阵(二)

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 05:56:06

 

5、                      矩阵(二)

编写C++程序完成以下功能:

(1)    假定矩阵大小为4×5(整型);

(2)    矩阵空间采用new动态申请,保存在指针中;

(3)    定义矩阵初始化函数,可以从cin中输入矩阵元素;

(4)    定义矩阵输出函数,将矩阵格式化输出到cout;

(5)    定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中;

(6)    定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中;

(7)    动态申请三个矩阵:A1、A2、A3;

(8)    初始化A1、A2;

(9)    计算并输出A3 = A1加A2,A3 = A1减A2;

(10)释放矩阵空间。

 

#include

#include

 

using namespace std;

 

/*定义一个矩阵类*/

class Matrix

{

private:

       int X[4][5];

public:

       void SetMatrix(int xx[4][5]=0);

    void SetArray(int xx[4][5]);

       void putoutMatrix();

    friend void matrixplus(Matrix* a,Matrix* b,Matrix* c);

       friend void matrixsub(Matrix* a,Matrix* b,Matrix* c);

};

 

/*矩阵初始化*/

void Matrix::SetMatrix(int xx[4][5])

{    

       int i,j;

      

       for(i=0;i<=3;i++)

       {

           for(j=0;j<=4;j++)

              {

                     X[i][j]=xx[i][j];

              }

       }

}

 

/*二维数组初始化*/

void Matrix::SetArray(int xx[4][5])

{

       int i,j;

 

       cout<<"请输入一个4*5矩阵:"<

       for(i=0;i<=3;i++)

       {

              for(j=0;j<=4;j++)

              {

                     cin>>xx[i][j];

              }

              getchar();

       }

}

 

void Matrix::putoutMatrix()

{

       int i,j;

 

       for(i=0;i<=3;i++)

       {

              for(j=0;j<=4;j++)

              {

                     cout<

              }

              cout<

       }

}

 

void matrixplus(Matrix* a,Matrix* b,Matrix* c)

{

       int i,j; 

    for(i=0;i<=3;i++)

       {

              for(j=0;j<=4;j++)

              {

                     ((*c).X[i][j])=((*a).X[i][j])+((*b).X[i][j]);

              }

       }

}

 

void matrixsub(Matrix* a,Matrix* b,Matrix* c)

{

       int i,j;

    for(i=0;i<=3;i++)

       {

              for(j=0;j<=4;j++)

              {

                     (c->X[i][j])=(a->X[i][j])-(b->X[i][j]);

              }

       }

}

 

 

int main()

{

       Matrix *A1,*A2,*A3,*A4;

       int xx1[4][5]={0},xx2[4][5]={0};

       char z1,z2;

       A1=new Matrix;

       A2=new Matrix;

       A3=new Matrix;

       A4=new Matrix;

      

       A3->SetMatrix(xx1);A4->SetMatrix(xx1);

      

      

       cout<<"采用默认值(y)/手动初始化矩阵A1(n)"<

       cin>>z1;

       if(z1!='y')

       {

              A1->SetArray(xx1);

       }

       A1->SetMatrix(xx1);

 

              cout<<"采用默认值(y)/手动初始化矩阵A2(n)"<

       cin>>z2;

       if(z2!='y')

       {    

              A2->SetArray(xx2);

       }

       A2->SetMatrix(xx2);

 

       cout<

    A1->putoutMatrix();

       cout<

    A2->putoutMatrix();

 

       matrixplus(A1,A2,A3);

       matrixsub(A1,A2,A4);

 

       cout<

       A3->putoutMatrix();

       cout<

       A4->putoutMatrix();

       delete A1;

    delete A2;

    delete A3;

    delete A4;

       system("pause");

       return 0;

}