কম্পিউটার

সি প্রোগ্রামিং-এ zag-zag ফ্যাশনে ম্যাট্রিক্স প্রিন্ট করুন।


একটি ম্যাট্রিক্স ম্যাট[সারি][কল] দেওয়া হলে আমাদের প্রদত্ত ম্যাট্রিক্সটিকে জিগ-জ্যাগ ফ্যাশনে প্রিন্ট করতে হবে, যেমনটি নীচের চিত্রটিতে রয়েছে −

সি প্রোগ্রামিং-এ zag-zag ফ্যাশনে ম্যাট্রিক্স প্রিন্ট করুন।

সুতরাং আউটপুট −

এর মত হওয়া উচিত
Output: 10 20 40 70 50 30 60 80 90

উপরের সমস্যার জন্য, আমরা একটি সহজ পদ্ধতি অনুসরণ করেছি যেখানে আমাদের ম্যাট্রিক্সকে তির্যকভাবে পুনরাবৃত্তি করতে হবে এবং প্রতি আগের ম্যাচের পর দিক পরিবর্তন করতে পুনরাবৃত্তির মান পরিবর্তন করতে হবে।

অ্যালগরিদম

START
STEP 1-> DECALRE AND SET k = 3, l = 3
STEP 2-> DECLARE A MATRIX mat[][3]
STEP 3-> DECLARE AND SET row = 0, col = 0, flag = false;
STEP 4-> SET mn = MINIMUM(k, l)
STEP 5-> LOOP FOR len = 1 AND len <= mn AND ++len
   LOOP FOR i = 0 AND i < len AND ++i
      PRINT mat[row][col]
      IF i + 1 == len THEN,
         BREAK
      END IF
      IF flag THEN,
         INCREMENT row BY 1 AND DECREMENT col BY 1
      ELSE
         DECREMENT row BY 1 AND INCREMENT col BY 1
      END IF
   END FOR
   IF len == mn THEN,
      BREAK
   END IF
   IF flag THEN
      INCREMENT row BY 1 AND SET flag = FALSE
   ELSE
      INCREMENT col BY 1 AND SET flag = TRUE
   END IF
END FOR
STEP 6-> IF row == 0 THEN,
   IF col == k – 1 THEN,
      INCREMENT row BY 1
   ELSE
      INCREMENT col BY 1
   END IF
   SET flag = 1
   ELSE
      IF row == l – 1 THEN,
         INCREMENT col BY 1
      ELSE
         INCREMENT row BY 1
   SET flag = 0
END IF
STEP 7-> SET MAX = MAXIMUM(k, l) – 1
STEP 8-> LOOP FOR len, diag = MAX AND diag > 0 AND --diag
   IF diag > mn THEN,
      SET len = mn
   ELSE
   SET len = diag
   END IF
   FOR i = 0 AND i < len AND ++i
      PRINT mat[row][col]
   IF i + 1 == len THEN,
      BREAK
   END IF
   IF flag THEN,
      INCREMENT row BY 1 AND DECREMENT col BY 1
   ELSE
      INCREMENT col BY 1 AND DECREMENT row BY 1
   END IF
   IF row == 0 || col == k – 1 THEN,
      IF col == k - 1
         INCREMENT row BY 1
      ELSE
         INCREMENT col BY 1
      END IF
      SET flag = true
      ELSE IF col == 0 || row == l – 1 THEN,
         IF row == l – 1 THEN,
            INCREMENT col BY 1
         ELSE
            INCREMENT row BY 1
         END IF
         SET flag = false
      ENF IF
   END FOR
STOP

উদাহরণ

#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); //to check the minimum number and return that minimum number
   for ( len = 1; len <= mn; ++len) {
      for ( i = 0; i < len; ++i) {
         printf("%d ", mat[row][col]); //Printing the matrix in zigzag format
         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; //To check the maximum element
   for ( len, diag = MAX; diag > 0; --diag) { //Loop to go diagonally.
      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. সি প্রোগ্রামিং-এ স্নেক প্যাটার্নে ম্যাট্রিক্স প্রিন্ট করুন।

  2. C প্রোগ্রামে O(1) অতিরিক্ত স্থান ব্যবহার করে n x n স্পাইরাল ম্যাট্রিক্স প্রিন্ট করুন।

  3. সি প্রোগ্রামে ম্যাট্রিক্স তির্যক প্যাটার্নে সংখ্যা মুদ্রণ করুন।

  4. C প্রোগ্রামে তির্যকভাবে নিচের দিকে ম্যাট্রিক্স প্রিন্ট করুন।