/*
4.有兩個矩陣a和b,均為2行3列。求兩個矩陣之和。
重載運算符“ + ”,使之能用于知陣相加。
如:c = a + b。
5.在第4題的基礎上,重載流插入運算符“<<”和流提取運算符“>>”,使之能用于該矩陣的輸入和輸出。
*/
#include <iostream>
using namespace std;
//矩陣類
class Matrix {
public:
//無參構造函數
Matrix();
//輸入矩陣
void input();
//使用重載操作符operator重載運算符‘+’
friend Matrix operator+(Matrix& a, Matrix& b);
friend istream& operator>>(istream&, Matrix&);
friend ostream& operator<<(ostream&, Matrix&);
private:
//2行3列矩陣存儲在該二維數組中
int a[2][3] = {0};
};
Matrix::Matrix() {
}
void Matrix::input() {
int i, j;
cout << "輸入矩陣():" << endl;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
cin >> a[i][j];
}
//重載 ‘+’
Matrix operator+(Matrix& a, Matrix& b) {
//new一個矩陣對象c
Matrix c;
int i, j;
//把兩個數組的值逐行按照順序對應相加後指派給c的數組
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++) {
c.a[i][j] = a.a[i][j] + b.a[i][j];
}
//傳回一個矩陣類型,c.a[][]即相加後的結果
return c;
}
//重載>>輸入
istream& operator>>(istream& in, Matrix& m)
{
cout << "輸入矩陣():" << endl;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++) {
in >> m.a[i][j];
}
return in;
}
//重載<<輸出
ostream& operator<<(ostream& out, Matrix& m)
{
cout << "此矩陣為:" << endl;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
out << m.a[i][j] << " ";
}
out << endl;
}
return out;
}
int main() {
Matrix a, b, c;
cin >> a;
cin >> b;
c = a + b;
cout<<c;
return 0;
}