时间限制: 1 Sec 内存限制: 128 MB
提交: 160 解决: 82
[提交][状态][讨论版]
题目描述
下面主函数和Array类完成矩阵的输入、输出。请补齐Array类中需要的成员函数。
注意:主函数和CArray类已给代码不可修改,只可在CArray类中添加新的成员函数。修改已改代码不计分。
提示:根据已给代码分析CArray需要重载哪些运算符?
输入
测试次数
每组测试数据格式如下:
正整数n、m,分表表示矩阵的行、列
n*m行整数数据
输出
每组测试数据输出矩阵数据两次,具体输出格式见样例。
样例输入
2
3 3
1 2 3
4 5 6
7 8 9
2 4
10 20 30 40
50 60 70 80
样例输出
MatrixA:
1 2 3
4 5 6
7 8 9
MatrixB:
1 2 3
4 5 6
7 8 9
MatrixA:
10 20 30 40
50 60 70 80
MatrixB:
10 20 30 40
50 60 70 80
提示
#include<iostream>
using namespace std;
class CArray{
private:
int n=0,m=0;
int **data=NULL;
public:
CArray(){};
CArray(int nValue,int mValue):n(nValue),m(mValue)
{
data=new int*[n];
for(int i=0;i<n;i++)
data[i]=new int[m];
}
CArray(const CArray &a)
{
n=a.n;
m=a.m;
data=new int*[n];
for(int i=0;i<n;i++)
data[i]=new int[m];
for(int i=0;i<n;++i)
for(int j=0;j<m;j++)
data[i][j]=a.data[i][j];
}
CArray &operator =(const CArray &a)
{
if(data!=NULL)
{
for (int i=0; i<n; i++)
delete []data[i];
delete []data;
}
n=a.n;
m=a.m;
data=new int*[n];
for(int i=0;i<n;i++)
data[i]=new int[m];
for(int i=0;i<n;++i)
for(int j=0;j<m;j++)
data[i][j]=a.data[i][j];
return *this;
}
~CArray()
{
for(int i=0;i<n;i++)
delete []data[i];
delete []data;
}
int *const operator [](const int k)
{
return data[k];
}
int operator () (int i,int j)
{
return data[i][j];
}
};
int main()
{
int t;
int n,m;
int i,j;
cin>>t;
while(t--)
{
cin>>n>>m;
CArray matrixA(n,m);
for(i=0;i<n;++i)
for(j=0;j<m;j++)
cin>>matrixA[i][j];
cout<<"MatrixA:"<<endl;
for(i=0;i<n;++i)
{
for(j=0;j<m;j++)
{
cout<<matrixA(i,j)<<" ";
}
cout<<endl;
}
cout<<"MatrixB:"<<endl;
CArray matrixB;
matrixB=matrixA;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout<<matrixB[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}
}