कार्य n x n मैट्रिक्स को विकर्ण पैटर्न में प्रिंट करना है।
यदि n 3 है तो विकर्ण पैटर्न में मैट्रिक्स प्रिंट करना है:

इसलिए आउटपुट इस तरह होगा:

उदाहरण
इनपुट: 3 आउटपुट: 1 2 4 3 5 7 6 8 9 इनपुट: 4 आउटपुट: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16
समस्या सुझाव देती है कि हमें एक संख्या n देनी है और n x n का मैट्रिक्स जनरेट करना है और फिर मैट्रिक्स को विकर्ण पैटर्न में ट्रैवर्स करना है और मानों को अलग मैट्रिक्स में संग्रहीत करना है।
लेकिन यह हमारे कोड की जटिलता बढ़ा देगा, इसलिए हम:
- N X N आकार का एक मैट्रिक्स बनाएंगे जो प्रिंटिंग से पहले पैटर्न संग्रहीत करेगा।
- पैटर्न के ऊपरी त्रिकोण में एलिमेंट्स संग्रहीत करेंगे। जैसा कि देखा गया है, जैसे-जैसे आप विकर्ण के नीचे जाते हैं पंक्ति सूचकांक 1 से बढ़ता है और कॉलम सूचकांक 1 से घटता है।
- एक बार ऊपरी त्रिकोण पूरा हो जाने पर निचले त्रिकोण के एलिमेंट्स को ऊपरी त्रिकोण के समान तरीके से संग्रहीत करें यानी पंक्ति सूचकांक 1 से बढ़ता है और कॉलम सूचकांक 1 से घटता है जैसे-जैसे आप विकर्ण के नीचे जाते हैं।
एल्गोरिदम
int printdiagonal(int n)
शुरुआत
चरण 1: int mat[n][n], i, j, k, d=1, m घोषित करें
चरण 2: i = 0 से n तक i++ लूप
j को i और k को 0 असाइन करें
j = i से j >= 0 तक j-- लूप
mat[k][j] = d असाइन करें
d और k को 1 से बढ़ाएं
लूप समाप्त
लूप समाप्त
चरण 3: k = 1 से n तक k++ लूप
i और m को k के बराबर असाइन करें
j = n-1 से j >= m तक j-- लूप
mat[i][j] = d असाइन करें
d और i को 1 से बढ़ाएं
लूप समाप्त
लूप समाप्त
चरण 4: i = 0 से n तक i++ लूप
j = 0 से n तक j++ लूप
mat[i][j] प्रिंट करें
लूप समाप्त
नई लाइन प्रिंट करें
लूप समाप्त
समाप्त
उदाहरण
#include <stdio.h>
int printdiagonal(int n){
int mat[n][n], i, j, k, d=1, m;
for ( i = 0; i < n; i++){
j = i;
k = 0;
for ( j = i; j >= 0; j--){
mat[k][j] = d;
d++;
k++;
}
}
for ( k = 1; k < n; k++){
i = m = k;
for ( j = n-1; j >= m; j--){
mat[i][j] = d;
d++;
i++;
}
}
for ( i = 0; i < n; i++){
for(j = 0; j < n; j++){
printf("%d ", mat[i][j] );
}
printf("\n");
}
}
int main(int argc, char const *argv[]){
int n = 3;
printdiagonal(n);
return 0;
}
आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
1 2 4 3 5 7 6 8 9