应用vector类来定义二维数组

Description

在类模板T_Matrix中使用类模板T_Vector(向量运算类模板)实现矩阵的加、减运算,在main函数中使用类模板T_Matrix建立整型矩阵对象进行矩阵的加减运算。

Input

输入为若干组数据,每组数据用若干行表示,其中第1行为一个字符(+或-),表示接下来输入的两个矩阵所要做的运算,第2行为两个整数m和n,表示接下来输入的两个矩阵均为m*n的矩阵。随后若干行为两个n*m的矩阵。

Output

输出为若干组数据,每组数据用若干行表示,为一个m*n的矩阵,即运算结果。

Sample Input

+

2 3

1 2 3

4 5 6

1 2 3

4 5 6

-

2 3

1 2 3

4 5 6

7 8 9

10 11 12

Sample Output

2 4 6

8 10 12

-6 -6 -6

-6 -6 -6

HINT

#include<iostream> 
#include<vector> 
using namespace std; 
class Matrix { 
int column,row; 
vector< vector<int> >V; 
public: 
Matrix(int c,int r):column(c),row(r){} 
Matrix(Matrix&U); 
int getcolumn()const{return column;} 
int getrow()const{return row;} 
void buildit(); 
friend void showit(Matrix&U); 
friend Matrix operator+(const Matrix&first,const Matrix&second); 
friend Matrix operator-(const Matrix&first,const Matrix&second); 
}; 
Matrix::Matrix(Matrix&U){ 
column=U.column; 
row = U.row; 
for(int i=0;i<column;i++) 
V.push_back(U.V[i]); 
} 
void Matrix::buildit() 
{ 
vector<int>U; 
int num; 
for(int i=0;i<column;i++) 
{ 
for(int j=0;j<row;j++) 
{ 
cin>>num; 
U.push_back(num); 
} 
V.push_back(U); 
U.clear(); 
} 
} 
void showit(Matrix & U){ 
for(int i=0;i< U.column ;i++) 
{ 
for(int j=0;j<U.row;j++) 
{ 
if(j==U.row-1) cout<<U.V[i][U.row-1]<<endl; 
else cout<<U.V[i][j]<<" "; 
} 
} 
} 
Matrix operator+(const Matrix&first,const Matrix&second){ 
Matrix getit(first.getcolumn(),first.getrow()); 
vector<int>TT; 
for(int i=0;i < (int)first.V.size() ;i++) 
{ 
for(int j=0;j < (int)first.V[i].size();j++) 
TT.push_back(first.V[i][j]+second.V[i][j]); 
getit.V.push_back(TT); 
TT.clear(); 
} 
return getit; 
} 
Matrix operator-(const Matrix&first,const Matrix&second){ 
Matrix getit(first.getcolumn(),first.getrow()); 
vector<int>TT; 
for(int i=0;i < (int)first.V.size() ;i++) 
{ 
for(int j=0;j < (int)first.V[i].size();j++) 
TT.push_back(first.V[i][j]-second.V[i][j]); 
getit.V.push_back(TT); 
TT.clear(); 
} 
return getit; 
} 
int main(){ 
char ch; 
int r,c; 
while(cin>>ch){ 
cin>>c>>r; 
Matrix one(c,r); 
Matrix two(c,r); 
Matrix three(c,r); 
one.buildit(); 
two.buildit(); 
if(ch=='+') 
three = one + two; 
else 
three = one - two; 
showit(three); 
} 
} 

  

posted on 2013-04-23 23:37  Besion王  阅读(2102)  评论(0编辑  收藏  举报

导航