打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
矩阵(三)

 

6、                      矩阵(三)

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

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

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

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

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

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

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

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

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

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

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

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

(3)    定义三个矩阵:A1A2A3

(4)    初始化A1A2

(5)    计算并输出A3 = A1A2A3=A1A2

(6)    new动态创建三个矩阵类的对象:pA1pA1pA3

(7)    初始化pA1pA2

(8)    计算并输出pA3=pA1pA2pA3=pA1pA2

(9)    释放pA1pA1pA3

 

#include<iostream>

#include <iomanip>

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<<"请输入一个"<<lines<<"*"<<rows<<"矩阵:"<<endl;

     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<<setw(5)<<Array[i][j];

         }

         cout<<endl;

     }

}

   

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)?"<<endl;

       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<<"请输入矩阵的行和列(用空格隔开):"<<endl;

        cin>>l>>r;

      

         PA3.Setmatrix(l,r);

          PA4.Setmatrix(l,r);

 

        PA1.Setmatrix(l,r);

        PA1.putin();

        PA2.Setmatrix(l,r);

        PA2.putin();

       }

   

       cout<<endl<<"矩阵PA1为:"<<endl;

    PA1.putout();

       cout<<endl<<"矩阵PA2为:"<<endl;

    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<<endl<<"PA1+PA2="<<endl;

    PA3.putout();

    cout<<endl<<"PA1-PA2="<<endl;

    PA4.putout();

   

    system("pause");

    return 0;

}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
燕山大学C++实验报告
在Visual C++ 6.0上实现矩阵的各种运算
Map a Eigen Matrix to an C array
矩阵类的模板实现(C++)
Eigen入门指导书3-数组类和基于元素操作
一文学会Eigen库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服