समस्या
हमें मुख्य विकर्ण तत्वों को द्वितीयक विकर्ण तत्वों के साथ बदलने के लिए एक कोड लिखना होगा। मैट्रिक्स का आकार रनटाइम पर दिया जाता है।
यदि मैट्रिक्स का आकार m और n मान समान नहीं हैं, तो यह प्रिंट करता है कि दिया गया मैट्रिक्स एक वर्ग नहीं है।
केवल एक वर्ग मैट्रिक्स मुख्य विकर्ण तत्वों को बदल सकता है और द्वितीयक विकर्ण तत्वों के साथ इंटरचेंज कर सकता है।
समाधान
दिए गए मैट्रिक्स में विकर्ण तत्वों को इंटरचेंज करने के लिए C प्रोग्राम लिखने का समाधान इस प्रकार है -
विकर्ण तत्वों को आपस में बदलने का तर्क नीचे समझाया गया है -
for (i=0;i<m;++i){ a = ma[i][i]; ma[i][i] = ma[i][m-i-1]; ma[i][m-i-1] = a; }
उदाहरण
दिए गए मैट्रिक्स में विकर्ण तत्वों को आपस में बदलने . के लिए C प्रोग्राम निम्नलिखित है -
#include<stdio.h> main (){ int i,j,m,n,a; static int ma[10][10]; printf ("Enter the order of the matrix m and n\n"); scanf ("%dx%d",&m,&n); if (m==n){ printf ("Enter the co-efficients of the matrix\n"); for (i=0;i<m;++i){ for (j=0;j<n;++j){ scanf ("%d",&ma[i][j]); } } printf ("The given matrix is \n"); for (i=0;i<m;++i){ for (j=0;j<n;++j){ printf (" %d",ma[i][j]); } printf ("\n"); } for (i=0;i<m;++i){ a = ma[i][i]; ma[i][i] = ma[i][m-i-1]; ma[i][m-i-1] = a; } printf ("Matrix after changing the \n"); printf ("Main & secondary diagonal\n"); for (i=0;i<m;++i){ for (j=0;j<n;++j){ printf (" %d",ma[i][j]); } printf ("\n"); } } else printf ("The given order is not square matrix\n"); }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Run 1: Enter the order of the matrix m and n 3x3 Enter the co-efficient of the matrix 1 2 3 4 5 6 7 8 9 The given matrix is 1 2 3 4 5 6 7 8 9 Matrix after changing the Main & secondary diagonal 3 2 1 4 5 6 9 8 7 Run 2: Enter the order of the matrix m and n 4x3 The given order is not square matrix