मैट्रिक्स संख्याओं का एक आयताकार सरणी है जो पंक्तियों और कॉलम के रूप में व्यवस्थित होता है।
मैट्रिक्स का एक उदाहरण निम्नलिखित है।
एक 3*3 मैट्रिक्स में 3 पंक्तियाँ और 3 कॉलम होते हैं जैसा कि नीचे दिखाया गया है:
8 6 3 7 1 9 5 1 9
बहुआयामी सरणियों का उपयोग करके दो मैट्रिक्स गुणा करने का एक प्रोग्राम निम्नलिखित है।
उदाहरण
#include<iostream> using namespace std; int main() { int product[10][10], r1=2, c1=3, r2=3, c2=3, i, j, k; int a[2][3] = { {2, 4, 1} , {2, 3, 9} }; int b[3][3] = { {1, 2, 3} , {3, 6, 1} , {2, 9, 7} }; if (c1 != r2) { cout<<"पहले मैट्रिक्स का कॉलम दूसरे मैट्रिक्स की पंक्ति के बराबर होना चाहिए"; } else { cout<<"पहला मैट्रिक्स है:"<<endl; for(i=0; i<r1; ++i) { for(j=0; j<c1; ++j) cout<<a[i][j]<<" "; cout<<endl; } cout<<endl; cout<<"दूसरा मैट्रिक्स है:"<<endl; for(i=0; i<r2; ++i) { for(j=0; j<c2; ++j) cout<<b[i][j]<<" "; cout<<endl; } cout<<endl; for(i=0; i<r1; ++i) for(j=0; j<c2; ++j) { product[i][j] = 0; } for(i=0; i<r1; ++i) for(j=0; j<c2; ++j) for(k=0; k<c1; ++k) { product[i][j]+=a[i][k]*b[k][j]; } cout<<"दो मैट्रिक्स का गुणनफल है:"<<endl; for(i=0; i<r1; ++i) { for(j=0; j<c2; ++j) cout<<product[i][j]<<" "; cout<<endl; } } return 0; } आउटपुट
पहला मैट्रिक्स है: 2 4 1 2 3 9 दूसरा मैट्रिक्स है: 1 2 3 3 6 1 2 9 7 दो मैट्रिक्स का गुणनफल है: 16 37 17 29 103 72
उपरोक्त प्रोग्राम में, दो मैट्रिक्स a और b को निम्नानुसार आरंभ किया जाता है।
int a[2][3] = { {2, 4, 1} , {2, 3, 9} }; int b[3][3] = { {1, 2, 3} , {3, 6, 1} , {2, 9, 7} }; यदि पहले मैट्रिक्स में कॉलम की संख्या दूसरे मैट्रिक्स में पंक्तियों की संख्या के बराबर नहीं है तो गुणा नहीं किया जा सकता। इस मामले में एक त्रुटि संदेश प्रिंट किया जाता है। यह निम्नानुसार दिया गया है।
if (c1 != r2) { cout<<"पहले मैट्रिक्स का कॉलम दूसरे मैट्रिक्स की पंक्ति के बराबर होना चाहिए"; } दोनों मैट्रिक्स a और b को नेस्टेड फॉर लूप का उपयोग करके प्रदर्शित किया जाता है। यह निम्नलिखित कोड स्निपेट द्वारा प्रदर्शित होता है।
cout<<"पहला मैट्रिक्स है:"<<endl; for(i=0; i<r1; ++i) { for(j=0; j<c1; ++j) cout<<a[i][j]<<" "; cout<<endl; } cout<<endl; cout<<"दूसरा मैट्रिक्स है:"<<endl; for(i=0; i<r2; ++i) { for(j=0; j<c2; ++j) cout<<b[i][j]<<" "; cout<<endl; } cout<<endl; इसके बाद, product[][] मैट्रिक्स को 0 से आरंभ किया जाता है। फिर दो मैट्रिक्स a और b का गुणनफल खोजने के लिए नेस्टेड फॉर लूप का उपयोग किया जाता है। यह नीचे दिए गए कोड स्निपेट में प्रदर्शित है।
for(i=0; i<r1; ++i) for(j=0; j<c2; ++j) { product[i][j] = 0; } for(i=0; i<r1; ++i) for(j=0; j<c2; ++j) for(k=0; k<c1; ++k) { product[i][j]+=a[i][k]*b[k][j]; } गुणनफल प्राप्त होने के बाद, इसे प्रिंट किया जाता है। यह निम्नानुसार दिखाया गया है।
cout<<"दो मैट्रिक्स का गुणनफल है:"<<endl; for(i=0; i<r1; ++i) { for(j=0; j<c2; ++j) cout<<product[i][j]<<" "; cout<<endl; }