এই সমস্যায়, আমরা 2-ডি অ্যারেকে 1-ডি অ্যারেতে রূপান্তর বুঝতে পারব। আমরা দেখব কিভাবে 2-ডি অ্যারের উপাদানগুলিকে 1-ডি অ্যারেতে সংরক্ষণ করা যায়।
এখানে, 1-ডি অ্যারের আকার 2-ডি অ্যারের মোট উপাদানের সংখ্যার সমান যা n*m।
প্রোগ্রামিংয়ে 2-ডি অ্যারে থেকে 1-ডি অ্যারে সংরক্ষণ করার দুটি উপায় রয়েছে। তারা হল-
- রো মেজর
- কলাম মেজর
সারি মেজর: সারি মেজরে, একটি সারির সমস্ত উপাদান একসাথে সংরক্ষণ করা হয় তারপর এটি পরবর্তী সারিতে চলে যায়।
nXm আকারের 2-D অ্যারের একটি উপাদানের একটি সূচক (i, j) 1-D অ্যারেতে সংরক্ষণ করা হলে, 1-D অ্যারেতে এর সূচকটি হল
(j) + (i)*m
কলাম প্রধান: প্রধান কলামে, একটি কলামের সমস্ত উপাদান একসাথে সংরক্ষণ করা হয় তারপর পরবর্তী কলামটি অতিক্রম করা হয়।
nXm আকারের 2-D অ্যারের একটি উপাদানের একটি সূচক (i, j) 1-D অ্যারেতে সংরক্ষণ করা হলে, 1-D অ্যারেতে এর সূচকটি হল
(i) + (j)*n
সমস্যা বোঝার জন্য একটি উদাহরণ দেখি,
ইনপুট: n =3, m =5, (i,j) =(0, 2)
আউটপুট: row-major =
column-major =
ব্যাখ্যা:
রো-মেজর =2 + 0*3 =3
Col-major =0 + 2*5 =10
2-D থেকে 1-D রূপান্তর চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#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