C++程序设计 (第三版) 谭浩强 习题10.4
习题 10.4 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。
代码块
#include <iostream>
#include <iomanip>
using namespace std;
const int ROW = 2;
const int COL = 3;
class Matrix{
public:
Matrix();
Matrix(int a[][COL]);
void inputMatrix(char *);
void outputMatrix(char *);
friend Matrix operator + (Matrix, Matrix);
private:
int arr[ROW][COL];
};
Matrix::Matrix(){
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
arr[i][j] = 0;
}
}
}
Matrix::Matrix(int a[][COL]){
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
arr[i][j] = a[i][j];
}
}
}
void Matrix::inputMatrix(char *str){
cout<<"Enter Matrix"<<str<<": "<<endl;
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
cin>>arr[i][j];
}
}
cout<<endl;
}
void Matrix::outputMatrix(char *str){
cout<<"Matrix"<<str<<": "<<endl;
cout<<setiosflags(ios::right);
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
cout<<setw(3)<<arr[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
Matrix operator + (Matrix m1, Matrix m2){
Matrix m3;
for(int i = 0; i < ROW; i++){
for(int j = 0; j < COL; j++){
m3.arr[i][j] = m1.arr[i][j] + m2.arr[i][j];
}
}
return m3;
}
int main(){
int mt[2][3] = {{13, 14, 15}, {16, 17, 18}};
Matrix m1, m2, m3;
Matrix m4(mt);
m1.inputMatrix("1");
m1.outputMatrix("1");
m2.inputMatrix("2");
m2.outputMatrix("2");
m3 = m1 + m2;
m3.outputMatrix("3");
m3 = m1 + m4;
m3.outputMatrix("4");
system("pause");
return 0;
}