即墨海立美达怎么样:矩阵(三)

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 18:39:12

 

6、                      矩阵(三)

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

(1)    用类来实现矩阵,定义一个矩阵的类,属性包括:

l        矩阵大小,用 lines, rows(行、列来表示);

l        存贮矩阵的数组指针,根据矩阵大小动态申请(new)。

(2)    矩阵类的方法包括:

l        构造函数,参数是矩阵大小,需要动态申请存贮矩阵的数组;

l        析构函数,需要释放矩阵的数组指针;

l        拷贝构造函数,需要申请和复制数组;

l        输入,可以从cin中输入矩阵元素;

l        输出,将矩阵格式化输出到cout;

l        矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵类,但必须矩阵大小相同;

l        矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵类,但必须矩阵大小相同。

(3)    定义三个矩阵:A1、A2、A3;

(4)    初始化A1、A2;

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

(6)    用new动态创建三个矩阵类的对象:pA1、pA1、pA3;

(7)    初始化pA1、pA2;

(8)    计算并输出pA3=pA1加pA2,pA3=pA1减pA2;

(9)    释放pA1、pA1、pA3。

 

#include

#include

using namespace std;

 

class Matrix

{

private:

    int lines;

    int rows;

   

public:

       int **Array;

      

    Matrix(int Nlines=3,int Nrows=3)

 {

        int i;

        lines=Nlines;

        rows=Nrows;

              Array=new int *[lines];

        for(i=1;i<=lines;i++)

        {

            Array[i]=new int(rows);

        }

 }

 

       void Setmatrix(int Nlines,int Nrows);

    Matrix(Matrix &p);

    int Getlines() {return lines;}

    int Getrows() {return rows;}

    int*GetArray() {return Array[lines];}

                         

    void putin();

       void putin(int x,int y,int a);

    void putout();

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

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

    ~Matrix()

    {

        int i;

        for(i=1;i<=lines;i++)

        {

            delete [] Array[i];

        }

              delete [] Array;

    }

};

 

Matrix::Matrix(Matrix &p)

{

     lines=p.lines;

     rows=p.rows;

     Array[lines]=p.Array[p.lines];

}

 

 

void Matrix::Setmatrix(int Nlines,int Nrows)

 {

      int i;

      lines=Nlines;

      rows=Nrows;

         Array=new int *[lines];

      for(i=1;i<=lines;i++)

      {

          Array[i]=new int(rows);

      }

 }

 

void Matrix::putin()

{

     int i,j;

     cout<<"请输入一个"<

     for(i=1;i<=lines;i++)

     {

         for(j=1;j<=rows;j++)

         {

             cin>>Array[i][j];

         }

         getchar();

     }

}

 

void Matrix::putin(int x,int y,int a)

{

       int i,j;

       for(i=1;i<=x;i++)

     {

         for(j=1;j<=y;j++)

         {

             Array[i][j]=a;

         }

     }

}

 

 

void Matrix::putout()

{

     int i,j;

     for(i=1;i<=lines;i++)

     {

         for(j=1;j<=rows;j++)

         {

             cout<

         }

         cout<

     }

}

   

void Matrixplus(Matrix* a,Matrix* b,Matrix* c,int l,int r)

{

     int i,j;

     for(i=1;i<=l;i++)

     {

         for(j=1;j<=r;j++)

         {

             c->Array[i][j]=a->Array[i][j]+b->Array[i][j];

         }

     }

}                                      

   

void Matrixsub(Matrix* a,Matrix* b,Matrix* c,int l,int r)

{

     int i,j;

     for(i=1;i<=l;i++)

     {

         for(j=1;j<=r;j++)

         {

             c->Array[i][j]=a->Array[i][j]-b->Array[i][j];

         }

     }

}

 

 

 

int main()

{

    Matrix PA1(3,4),PA2(3,4),PA3(3,4),PA4(3,4);

    int l,r;

       char z;

 

       cout<<"采用默认值(y)/手动输入(非y)?"<

       cin>>z;

       if(z=='y')

       {

              PA1.Setmatrix(3,4);

        PA1.putin(3,4,3);

        PA2.Setmatrix(3,4);

              PA2.putin(3,4,3);

       }

      

       else

       {

        cout<<"请输入矩阵的行和列(用空格隔开):"<

        cin>>l>>r;

      

         PA3.Setmatrix(l,r);

          PA4.Setmatrix(l,r);

 

        PA1.Setmatrix(l,r);

        PA1.putin();

        PA2.Setmatrix(l,r);

        PA2.putin();

       }

   

       cout<

    PA1.putout();

       cout<

    PA2.putout();

 

       if(z=='y')

       {

              Matrixplus(&PA1,&PA2,&PA3,3,4);

        Matrixsub(&PA1,&PA2,&PA4,3,4);

       }

       else

       {

        Matrixplus(&PA1,&PA2,&PA3,l,r);

        Matrixsub(&PA1,&PA2,&PA4,l,r);

       }

    cout<

    PA3.putout();

    cout<

    PA4.putout();

   

    system("pause");

    return 0;

}