题目描述
利用重载运算符,实现矩阵的加法,减法。
请重载加减运算符并自定义矩阵类完成相应的操作
输入
第一行为测试数据数
对于每组测试数据
第一行为矩阵的行数和列数
接下来分别为两个矩阵的各个元素
输出
输出矩阵的和与差
输入 | 输出 |
2 4 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 9 8 7 6 5 4 3 2 1 0 -1 5 6 9 1 2 0 2 1 6 4 5 9 8 7 6 5 4 3 2 1 0 -1 5 6 9 1 2 0 2 1 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Add:\n 10 10 10 10 10 \n 10 10 10 10 10 \n 10 17 19 23 16 \n 18 17 20 20 26 \n Minus:\n -8 -6 -4 -2 0 \n 2 4 6 8 10 \n 12 7 7 5 14 \n 14 17 16 18 14 \n -----------------\n Add:\n 10 10 10 10 10 \n 10 10 10 10 10 \n 10 17 19 23 16 \n 18 17 20 20 26 \n Minus:\n 8 6 4 2 0 \n -2 -4 -6 -8 -10 \n -12 -7 -7 -5 -14 \n -14 -17 -16 -18 -14 \n ----------------- |
#include<iostream>
#include<string>
using namespace std;
class square{
private:
int h,l;
int **s;
public:
// square(int a=0,int b=0)
// {
// s = new int*[a];
// for(int i = 0 ; i < h ; i++ ){
// s[i] = new int[b];
// }
// }
square(int a,int b,int**p){
h=a,l=b;
s = new int*[a];
for(int i = 0 ; i < h ; i++ ){
s[i] = new int[b];
for(int j = 0 ; j < l ; j++ ){
s[i][j] = p[i][j];
}
}
}
square(square &u){ //很重要,定义拷贝构造,规避链接bug
h=u.h,l=u.l;
s = new int*[h];
for(int i = 0 ; i < h ; i++ ){
s[i] = new int[l];
for(int j = 0 ; j < l ; j++ ){
s[i][j] = u.s[i][j];
}
}
}
square operator+( square p){
// cout<<endl<<" p = ";
// p.show();
for(int i = 0 ; i < h ; i++ ){
for(int j = 0 ; j < l ; j++ ){
s[i][j]=s[i][j]+p.s[i][j];
}
}
return *this;
}
square operator-( square p){
// show();
for(int i = 0 ; i < h ; i++ ){
for(int j = 0 ; j < l ; j++ ){
s[i][j]=s[i][j]-p.s[i][j];
}
}
// show();
return *this;
}
void show(){
for(int i = 0 ; i < h ; i++ ){
for(int j = 0 ; j < l ; j++ ){
cout<<s[i][j]<<" ";
}
cout<<endl;
}
}
};
int main(){
int t;
cin>>t;
int h,l;
while(t--){
cin>>h>>l;
int **p1,**p2;
p1 = new int*[h];
p2 = new int*[h];
for(int i = 0 ; i < h ; i++ ){
p1[i] = new int [l];
for(int j = 0 ; j < l ; j++ ){
cin>>p1[i][j];
}
}
square a1(h,l,p1);
for(int i = 0 ; i < h ; i++ ){
p2[i] = new int [l];
for(int j = 0 ; j < l ; j++ ){
cin>>p2[i][j];
}
}
square a2(h,l,p2);
square a3=a1;
// cout<<"p1:"<<endl;
// a1.show();
// cout<<"p2:"<<endl;
// a2.show();
cout<<"Add:"<<endl;
a1+a2;
a1.show();
// a3.show();
cout<<"Minus:"<<endl;
a3-a2;
a3.show();
cout<<"-----------------";
if(t>0)
cout<<endl;
}
return 0;
}
该题含学习日志可参考http://t.csdn.cn/1GYAG