কম্পিউটার টিউটোরিয়াল

C++-এ একটি নির্দিষ্ট পয়েন্ট থেকে স্পাইরাল ফর্মে ম্যাট্রিক্স প্রিন্ট করা

এই সমস্যায় একটি ২D ম্যাট্রিক্স এবং একটি পয়েন্ট P(c,r) দেওয়া আছে। আমাদের ম্যাট্রিক্সের সকল উপাদান স্পাইরাল ফর্মে (বামঘুরে) প্রিন্ট করতে হবে যা দেওয়া পয়েন্ট P থেকে শুরু হবে।

উদাহরণ

নির্দিষ্ট পয়েন্ট থেকে স্পাইরাল ট্রাভার্সাল বুঝতে নিচের উদাহরণটি দেখুন।

বাস্তবায়ন

#include <iostream> 
using namespace std; 
const int MAX = 100; 

void printSpiralMatrix(int mat[][MAX], int r, int c) { 
    int i, a = 0, b = 2; 
    int low_row = (0 > a) ? 0 : a; 
    int low_column = (0 > b) ? 0 : b - 1; 
    int high_row = ((a + 1) >= r) ? r - 1 : a + 1; 
    int high_column = ((b + 1) >= c) ? c - 1 : b + 1; 
    while ((low_row > 0 - r && low_column > 0 - c)) { 
        for (i = low_column + 1; i <= high_column && i < c && low_row >= 0; ++i) 
            cout << mat[low_row][i] << " "; 
        low_row -= 1; 
        for (i = low_row + 2; i <= high_row && i < r && high_column < c; ++i) 
            cout << mat[i][high_column] << " "; 
        high_column += 1; 
        for (i = high_column - 2; i >= low_column && i >= 0 && high_row < r; --i) 
            cout << mat[high_row][i] << " "; 
        high_row += 1; 
        for (i = high_row - 2; i > low_row && i >= 0 && low_column >= 0; --i) 
            cout << mat[i][low_column] << " "; 
        low_column -= 1; 
    } 
    cout << endl; 
} 

int main() { 
    int mat[][MAX] = { 
        { 1, 4, 7 }, 
        { 2, 5, 8 }, 
        { 3, 6, 9 } 
    }; 
    int r = 3, c = 3; 
    cout << "Spiral traversal of matrix starting from point " << r << ", " << c << " is :\n"; 
    printSpiralMatrix(mat, r, c); 
    return 0; 
}

আউটপুট

Spiral traversal of matrix starting from point 3, 3 is :
7 8 5 4 9 6 3 2 1
  1. সি++-এ স্পায়রাল ম্যাট্রিক্স III (Spiral Matrix III)

  2. C++-এ স্পাইরাল ম্যাট্রিক্স (Spiral Matrix) প্রিন্ট

  3. C++-এ একটি ম্যাট্রিক্স কাউন্টার-ক্লকওয়াইজ স্পাইরাল ফর্মে প্রিন্ট করা

  4. সোর্স থেকে ডেস্টিনেশন পর্যন্ত সব পথ প্রিন্ট করা C++-তে