परिचय
इस ट्यूटोरियल में हम एक ऐसा प्रोग्राम लिखेंगे जो रो-मेजर (row-major) और कॉलम-मेजर (column-major) मैट्रिक्स को जोड़कर बनी मैट्रिक्स का ट्रेस (trace) ढूंढता है।
मैट्रिक्स का क्रम दिया जाने पर रो-मेजर और कॉलम-मेजर मैट्रिक्स कैसे बनाएं
क्रम - 3 x 3
रो-मेजर मैट्रिक्स -
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
कॉलम-मेजर मैट्रिक्स -
| 1 | 4 | 7 |
| 2 | 5 | 8 |
| 3 | 6 | 9 |
हमारे पास रो-मेजर और कॉलम-मेजर मैट्रिक्स हैं। अब हमें दोनों मैट्रिक्स को जोड़ना है। और परिणामी मैट्रिक्स का ट्रेस वह परिणाम है जिसे हम ढूंढ रहे हैं।
समाधान के 4 चरण
- रो-मेजर मैट्रिक्स बनाएं।
- कॉलम-मेजर मैट्रिक्स बनाएं।
- दोनों मैट्रिक्स को जोड़ें और परिणामी मैट्रिक्स स्टोर करें।
- परिणामी मैट्रिक्स का ट्रेस ढूंढें और परिणाम प्रिंट करें।
उदाहरण कोड
#include <iostream>
#include <bits/stdc++.h>
#include <regex>
using namespace std;
int traceOfRowAndColumnMajorMatrices(int m, int n) {
int row_major[m][n], column_major[m][n], addition_result[m][n], count = 1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
row_major[i][j] = count;
count += 1;
}
}
count = 1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
column_major[j][i] = count;
count += 1;
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
addition_result[i][j] = row_major[i][j] + column_major[i][j];
}
}
int trace = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
trace += addition_result[i][j];
}
}
}
return trace;
}
int main() {
int m = 3, n = 3;
cout << traceOfRowAndColumnMajorMatrices(m, n) << endl;
return 0;
}
आउटपुट
30
व्याख्या
3×3 मैट्रिक्स के लिए: रो-मेजर: [[1,2,3],[4,5,6],[7,8,9]] कॉलम-मेजर: [[1,4,7],[2,5,8],[3,6,9]] योग: [[2,6,10],[6,10,14],[10,14,18]] ट्रेस (विकर्ण योग): 2 + 10 + 18 = 30
निष्कर्ष
ट्रेस की गणना सीधे सूत्र से भी की जा सकती है: Σ(2 + (i-1)(m+n+2)) for i=1 to min(m,n)। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।