हमें एक मैट्रिक्स दिया गया है जो पंक्तियों और स्तंभों वाली 2-डी सरणी है और कार्य सभी पंक्तियों और स्तंभों के योग की गणना करना है जैसे कि यह बराबर है प्रिंसिपल या सेकेंडरी मैट्रिक्स का योग।
इनपुट -
int arr[row][col] = { { 4, 1, 7 }, { 10, 3, 5 }, { 2, 2, 11} }
आउटपुट - विकर्ण योग के बराबर योग वाली पंक्तियों/स्तंभों की संख्या &mins; 2पी>
स्पष्टीकरण -
मुख्य विकर्ण का योग है:4 + 3 + 11 =18 और द्वितीयक विकर्ण का योग है:7 + 3 + 2 =12. पंक्तियों का योग 4 + 1 + 7 =12 (TRUE), 10 + 3 + 5 =18 है (TRUE), 2 + 2 + 11 =15(FALSE) और कॉलम का योग है:4 + 10 + 2 =16(FALSE), 1 + 3 + 2 =6(FALSE), 7 + 5 + 11 =23( झूठा)। इसलिए, मुख्य विकर्ण और द्वितीयक विकर्ण के योग से मेल खाने वाली पंक्तियों/स्तंभों की संख्या है - 2
इनपुट -
int arr[row][col] = { { 1, 2, 3 }, { 4, 5, 2 }, { 7, 9, 10} }
आउटपुट − विकर्ण योग के बराबर योग वाली पंक्तियों/स्तंभों की संख्या है − 2
स्पष्टीकरण -
मुख्य विकर्ण का योग है:1 + 5 + 10 =16 और द्वितीयक विकर्ण का योग है:7 + 3 + 5 =15. पंक्तियों का योग 1 + 2 + 3 =6 (गलत), 4 + 5 + 2 =11 है (FALSE), 7 + 9 + 10 =26(FALSE) और कॉलम का योग है:7 + 4 + 1 =12(FALSE), 9 + 5 + 2 =16(TRUE), 3 + 2 + 10 =15( सच)। इसलिए, मुख्य विकर्ण और द्वितीयक विकर्ण के योग से मेल खाने वाली पंक्तियों/स्तंभों की संख्या है - 2
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पंक्ति आकार और स्तंभ आकार का मैट्रिक्स बनाने के लिए 2-डी सरणी बनाएं
-
प्रिंसिपल और सेकेंडरी मैट्रिक्स के लिए वैरिएबल बनाएं। साथ ही, गिनती को स्टोर करने के लिए एक गिनती चर
-
I से 0 तक col और j से col-1 तक col के लिए लूप प्रारंभ करें, i को बढ़ाएँ और j को घटाएँ
-
लूप के अंदर, प्रिंसिपल को प्रिंसिपल + मैट्रिक्स[i][i] और सेकेंडरी को सेकेंडरी + मैट्रिक्स[i][j]
के रूप में सेट करें -
I से 0 तक col तक के लिए लूप प्रारंभ करें
-
लूप के अंदर, पंक्ति को 0 पर सेट करें और col को 0 पर और लूप के अंदर, j से 0 तक col तक एक और लूप प्रारंभ करें
-
लूप के अंदर, पंक्ति को पंक्ति + मैट्रिक्स के रूप में सेट करें[i][j]
-
लूप के अंदर, j से 0 तक col तक एक और लूप प्रारंभ करें
लूप के अंदर, col से col + मैट्रिक्स[j][i] -
लूप के अंदर, IF (पंक्ति ==प्रिंसिपल) की जाँच करें || (पंक्ति ==सेकेंडरी) फिर गिनती को 1 से बढ़ाएं
-
लूप के अंदर, IF (col ==प्रिंसिपल) की जांच करें || (col ==सेकेंडरी) फिर गिनती को 1 से बढ़ा दें
-
गिनती लौटाएं
-
परिणाम प्रिंट करें।
उदाहरण
#include <iostream> #define row 3 #define col 3 using namespace std; int diagonal_sum(int matrix[row][col]){ int principal = 0; int secondary = 0; int r = 0; int c = 0; int count = 0; int i = 0, j = 0; for (i = 0, j = col - 1; i < col; i++, j--){ principal += matrix[i][i]; secondary += matrix[i][j]; } for (int i = 0; i < col; i++){ r = 0; c = 0; for (int j = 0; j < col; j++){ r += matrix[i][j]; } for (int j = 0; j < col; j++){ c += matrix[j][i]; } if ((r == principal) || (r == secondary)){ count++; } if ((c == principal) || (c == secondary)){ count++; } } return count; } int main(){ int matrix[row][col] = { { 4, 1, 7 }, { 10, 3, 5 }, { 2, 2, 11}}; cout<<"Count of rows/columns with sum equals to diagonal sum are: "<<diagonal_sum(matrix); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of rows/columns with sum equals to diagonal sum are: 2