मान लीजिए हमारे पास दो मैट्रिक्स mat1 और mat2 हैं। हमें इन दो मैट्रिक्स को जोड़कर तीसरा मैट्रिक्स बनाना है। हमें यह जोड़ ऑपरेटर को ओवरलोड करके करना होगा।
उदाहरण के लिए, यदि इनपुट है:
| 5 | 8 |
| 9 | 6 |
| 7 | 9 |
और
| 8 | 3 |
| 4 | 7 |
| 6 | 3 |
तो आउटपुट होगा:
| 13 | 11 |
| 13 | 13 |
| 13 | 12 |
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- जोड़ ऑपरेटर को ओवरलोड करें, यह दूसरे मैट्रिक्स mat को दूसरे तर्क के रूप में लेगा
- एक खाली 2D सरणी vv परिभाषित करें
- वर्तमान मैट्रिक्स के तत्वों को vv में लोड करें
- i := 0 से vv के आकार तक:
- j := 0 से vv[0] के आकार तक:
- vv[i][j] := vv[i][j] + mat.a[i][j]
- j := 0 से vv[0] के आकार तक:
- vv का उपयोग करके एक नया मैट्रिक्स लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <iostream> #include <vector> using namespace std; class Matrix { public: Matrix() {} Matrix(const Matrix& x) : a(x.a) {} Matrix(const vector<vector<int>>& v) : a(v) {} Matrix operator+(const Matrix&); vector<vector<int>> a; void display(){ for(int i = 0; i<a.size(); i++){ for(int j = 0; j<a[i].size(); j++){ cout << a[i][j] << " "; } cout << endl; } } }; Matrix Matrix::operator+(const Matrix& m){ vector<vector<int>> vv = a; for (int i=0; i<vv.size(); i++){ for (int j=0; j<vv[0].size(); j++){ vv[i][j] += m.a[i][j]; } } return Matrix(vv); } int main(){ vector<vector<int>> mat1 = {{5,8},{9,6},{7,9}}; vector<vector<int>> mat2 = {{8,3},{4,7},{6,3}}; int r = mat1.size(); int c = mat1[0].size(); Matrix m1(mat1), m2(mat2), res; res = m1 + m2; res.display(); } इनपुट
{{5,8},{9,6},{7,9}}, {{8,3},{4,7},{6,3}}आउटपुट
13 11 13 13 13 12