Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्रामिंग में मैट्रिक्स को ज़िग-ज़ैग फैशन में प्रिंट करना


एक मैट्रिक्स mat[row][col] दिया गया है, हमें दिए गए मैट्रिक्स को ज़िग-ज़ैग फैशन में प्रिंट करना है जैसे नीचे दिए गए चित्र में:

C प्रोग्रामिंग में मैट्रिक्स को ज़िग-ज़ैग फैशन में प्रिंट करना

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

Output: 10 20 40 70 50 30 60 80 90

उपरोक्त समस्या के लिए, हमने एक सरल दृष्टिकोण अपनाया है जहां हमें मैट्रिक्स को विकर्ण रूप से इटरेट करना है और प्रत्येक पिछले मैच के बाद दिशा बदलने के लिए इटरेशन के मान को बदलना है।

एल्गोरिदम

शुरुआत
चरण 1 → k = 3, l = 3 घोषित और सेट करें
चरण 2 → मैट्रिक्स mat[][3] घोषित करें
चरण 3 → row = 0, col = 0, flag = false घोषित और सेट करें
चरण 4 → mn = MINIMUM(k, l) सेट करें
चरण 5 → len = 1 से mn तक लूप ++len
   i = 0 से len तक लूप ++i
      mat[row][col] प्रिंट करें
      यदि i + 1 == len तो, ब्रेक
      यदि flag तो, row++ और col-- 
      अन्यथा row-- और col++
   लूप समाप्त
   यदि len == mn तो, ब्रेक
   यदि flag तो row++ और flag = FALSE
   अन्यथा col++ और flag = TRUE
लूप समाप्त
चरण 6 → यदि row == 0 तो
   यदि col == k-1 तो row++
   अन्यथा col++
   flag = 1
   अन्यथा
      यदि row == l-1 तो col++
      अन्यथा row++
      flag = 0
चरण 7 → MAX = MAXIMUM(k, l) - 1 सेट करें
चरण 8 → len, diag = MAX से diag > 0 तक --diag लूप
   यदि diag > mn तो len = mn अन्यथा len = diag
   i = 0 से len तक ++i लूप
      mat[row][col] प्रिंट करें
      यदि i + 1 == len तो ब्रेक
      यदि flag तो ++row, --col अन्यथा ++col, --row
      यदि row == 0 || col == k-1 तो
         यदि col == k-1 तो ++row अन्यथा ++col
         flag = true
      अन्यथा यदि col == 0 || row == l-1 तो
         यदि row == l-1 तो ++col अन्यथा ++row
         flag = false
   लूप समाप्त
समाप्त

उदाहरण

#include <stdio.h>
#include <stdbool.h>
#define C 3
#define min(a, b) a>b?b:a
#define max(a, b) a>b?a:b
int main(){
    int k = 3, l = 3;
    int mat[][3] = {
        { 10, 20, 30 },
        { 40, 50, 60 },
        { 70, 80, 90 }
    };
    int row = 0, col = 0;
    bool flag = false;
    int i, j, len, diag;
    int MAX;
    int mn = min(k, l);
    for ( len = 1; len <= mn; ++len) {
        for ( i = 0; i < len; ++i) {
            printf("%d ", mat[row][col]);
            if (i + 1 == len) break;
            if (flag) ++row, --col;
            else --row, ++col;
        }
        if (len == mn) break;
        if (flag) ++row, flag = false;
        else ++col, flag = true;
    }
    if (row == 0) {
        if (col == k - 1) ++row;
        else ++col;
        flag = 1;
    } else {
        if (row == l - 1) ++col;
        else ++row;
        flag = 0;
    }
    MAX = max(k, l) - 1;
    for ( len, diag = MAX; diag > 0; --diag) {
        if (diag > mn) len = mn;
        else len = diag;
        for ( i = 0; i < len; ++i) {
            printf("%d ", mat[row][col]);
            if (i + 1 == len) break;
            if (flag) ++row, --col;
            else ++col, --row;
        }
        if (row == 0 || col == k - 1) {
            if (col == k - 1) ++row;
            else ++col;
            flag = true;
        } else if (col == 0 || row == l - 1) {
            if (row == l - 1) ++col;
            else ++row;
            flag = false;
        }
    }
    return 0;
}

आउटपुट

यह प्रोग्राम आउटपुट प्रिंट करेगा:

10 20 40 70 50 30 60 80 90

  1. C प्रोग्राम में O(1) एक्स्ट्रा स्पेस का उपयोग करके n x n स्पाइरल मैट्रिक्स प्रिंट करना C प्रोग्राम में O(1) एक्स्ट्रा स्पेस का उपयोग करके n x n स्पाइरल मैट्रिक्स प्रिंट करना

    हमें एक पॉजिटिव इंटीजर n दिया गया है और केवल O(1) एक्स्ट्रा स्पेस का उपयोग करके क्लॉकवाइज दिशा में n x n का स्पाइरल मैट्रिक्स बनाना है। स्पाइरल मैट्रिक्स एक मैट्रिक्स है जो स्पाइरल की तरह काम करता है जो एक सर्कल के मूल से शुरू होकर क्लॉकवाइज फैशन में घूमता है। इसलिए कार्य O(1) स्पेस का उपयोग करके

  1. C प्रोग्राम में मैट्रिक्स में विकर्ण पैटर्न में संख्याएं प्रिंट करना C प्रोग्राम में मैट्रिक्स में विकर्ण पैटर्न में संख्याएं प्रिंट करना

    कार्य 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 समस्या सुझाव देती है कि हमें एक स

  1. C प्रोग्राम में मैट्रिक्स को विकर्ण रूप से नीचे की ओर प्रिंट करें C प्रोग्राम में मैट्रिक्स को विकर्ण रूप से नीचे की ओर प्रिंट करें

    परिचय दिए गए n x n आकार के ऐरे के तत्वों को विकर्ण रूप से नीचे की ओर प्रिंट करना है। विकर्ण रूप से नीचे की ओर प्रिंट करना इसका अर्थ है n x n आकार के किसी भी ऐरे को विकर्ण रूप से नीचे की ओर प्रिंट करना, जैसा कि नीचे दिए गए चित्र में दिखाया गया है। उदाहरण इनपुट: Matrix[3][3] = { { 1, 2, 3 }, { 4, 5