注册 登录
编程论坛 C++教室

矩阵空间采用 new 动态申请,保存在指针中。 这个步骤不会!!!

yu497272290 发布于 2014-09-07 16:30, 2322 次点击
第一题题目:
编写C++程序完成以下功能:
(1)假定矩阵大小为4×5(整型数组表示);
(2)定义矩阵初始化函数,可以从cin中输入矩阵元素;
(3)定义矩阵输出函数,将矩阵格式化输出到cout;
(4)定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中;
(5)定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中;
(6)定义三个矩阵:A1、A2、A3;
(7)初始化A1、A2;
计算并输出:A3 = A1加A2,A3 = A1减A2。
程序代码:
#include<iostream>
#define M 4
#define N 5
using namespace std;

class Matrix
{
      public:
            int A[M][N];
            void getMatrix()
            {
            cout<<"Please enter the matrix."<<endl;
            for(int i=0;i<M;i++)
               for(int j=0;j<N;j++)                     //读入矩阵
                   {
                   cin>>A[i][j];
                   }
            }
            
            void outPut()                             //输出矩阵
            {
            for(int i=0;i<M;i++)
               {
               for(int j=0;j<N;j++)
                   {
                   cout<<A[i][j]<<" ";
                   }
               cout<<endl;
               }
            }
            
            void matrixPlus(Matrix B,Matrix C)          //求和
            {
            for(int i=0;i<M;i++)
               for(int j=0;j<N;j++)
                   this->A[i][j]=B.A[i][j]+C.A[i][j];
            }
            
            void matrixCut(Matrix B,Matrix C)            //做差
            {
            for(int i=0;i<M;i++)
               for(int j=0;j<N;j++)
                   this->A[i][j]=B.A[i][j]-C.A[i][j];  
            }
            Matrix(){}
            ~Matrix(){}
};

main()
{
      Matrix A1,A2,A3;                           //声明类
      A1.getMatrix();                            //读入
      A2.getMatrix();
      
      cout<<"The result of A1 and A2 is:"<<endl;
      A3.matrixPlus(A1,A2);
      A3.outPut();
      cout<<"The result of A1 subtract A2 is:"<<endl;
      A3.matrixCut(A1,A2);
      A3.outPut();
      
      system("pause");
}



第二题题目:
2、矩阵(二)
编写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)释放矩阵空间。
3 回复
#2
stop12042014-09-08 08:49
就是让你使用new指令去申请个内存而已.
看你的可以申请二维数组.
比如  
int *p = new int;

程序代码:

//但我觉得你可以这样做.容易理解
    int (*p)[5];         //创建数组指针
    p = new int[4][5];   //二维
//下面是让你查看下内存地址,这个矩阵是不是很容易理解?
    for (int j = 0; j < 4; ++j)
    {
        for (int i = 0; i < 5; ++i)
            cout << &p[j][i] << " ";
        cout << endl;
    }

/*
0x4d2d30 0x4d2d34 0x4d2d38 0x4d2d3c 0x4d2d40
0x4d2d44 0x4d2d48 0x4d2d4c 0x4d2d50 0x4d2d54
0x4d2d58 0x4d2d5c 0x4d2d60 0x4d2d64 0x4d2d68
0x4d2d6c 0x4d2d70 0x4d2d74 0x4d2d78 0x4d2d7c
*/


[ 本帖最后由 stop1204 于 2014-9-8 08:52 编辑 ]
#3
yu4972722902014-09-09 12:16
回复 2 楼 stop1204
版主 在吗?
有一题需要你帮助
关于运算符重载
#4
stop12042014-09-10 07:43
回复 3 楼 yu497272290
哪个
1