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

সি++-এ ১-ডি অ্যারে ব্যবহার করে ২-ডি অ্যারে অনুকরণ


এই সমস্যায় আমরা ২-ডি অ্যারে থেকে ১-ডি অ্যারে রূপান্তর বুঝব। আমরা দেখব ২-ডি অ্যারের উপাদানগুলো ১-ডি অ্যারেতে কীভাবে সংরক্ষণ করা যায়।

এখানে, ১-ডি অ্যারের আকার ২-ডি অ্যারের মোট উপাদান সংখ্যার সমান যেটি n*m।

প্রোগ্রামিং-এ ২-ডি অ্যারে ১-ডি অ্যারেতে সংরক্ষণ করার দুটি পদ্ধতি রয়েছে। সেগুলো হলো:

  • রো মেজর (Row Major)
  • কলাম মেজর (Column Major)

রো মেজর: রো মেজরে, একটি রোয়ের সব উপাদান একসাথে সংরক্ষিত হয় তারপর পরের রোয়ে যাওয়া হয়।

যদি nXm আকারের ২-ডি অ্যারের একটি উপাদানের ইন্ডেক্স (i, j) ১-ডি অ্যারেতে সংরক্ষিত হয়, তবে ১-ডি অ্যারেতে এর ইন্ডেক্স হবে

(j) + (i)*m

কলাম মেজর: কলাম মেজরে, একটি কলামের সব উপাদান একসাথে সংরক্ষিত হয় তারপর পরের কলাম ট্রাভার্স করা হয়।

যদি nXm আকারের ২-ডি অ্যারের একটি উপাদানের ইন্ডেক্স (i, j) ১-ডি অ্যারেতে সংরক্ষিত হয়, তবে ১-ডি অ্যারেতে এর ইন্ডেক্স হবে

(i) + (j)*n

উদাহরণ দিয়ে বুঝি

ইনপুট: n = 3, m = 5, (i,j) = (0, 2)

আউটপুট:    রো-মেজর =
              কলাম-মেজর =

ব্যাখ্যা:

রো-মেজর = 2 + 0*3 = 3
কল-মেজর = 0 + 2*5 = 10

২-ডি থেকে ১-ডি রূপান্তর minhaj করার প্রোগ্রাম

#include<iostream> 
using namespace std; 

int main() { 
    int n = 3; 
    int m = 5; 
    int grid[n][m] = {{1, 2, 3}, 
                      {4, 5, 6}, 
                      {7, 8, 9}, 
                      {10, 11, 12}, 
                      {13, 14, 15}}; 
    int i = 0; 
    int j = 2; 
    int rowMajorIndex = i*n + j; 
    cout << "Index of element at index (0, 2) in 1-D array using row-major is " << rowMajorIndex << endl; 
    int colMajorIndex = i + j*m; 
    cout << "Index of element at index (0, 2) in 1-D array using column-major is " << colMajorIndex << endl; 
    return 0; 
}

আউটপুট

Index of element at index (0, 2) in 1-D array using row-major is 2 Index of element at index (0, 2) in 1-D array using column-major is 10
  1. C++-এ new ব্যবহার করে ডাইনামিক ২D অ্যারে ঘোষণা

  2. অ্যারে ব্যবহার করে কিউ বাস্তবায়নের C++ প্রোগ্রাম

  3. অ্যারে ব্যবহার করে স্ট্যাক বাস্তবায়নের C++ প্রোগ্রাম

  4. C++-এ new ব্যবহার করে ২D অ্যারে ডিক্লেয়ার করা (Dynamic 2D Array)