Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में 1-डी सरणी का उपयोग करके 2-डी सरणी का अनुकरण करना

इस समस्या में, हम 2-डी सरणी के 1-डी सरणी में रूपांतरण को समझेंगे। हम देखेंगे कि 2-डी सरणी के तत्वों को 1-डी सरणी में कैसे संग्रहीत किया जाए।

यहां, 1-डी सरणी का आकार 2-डी सरणी में तत्वों की कुल संख्या के समान है जो n*m है।

प्रोग्रामिंग में 2-डी सरणी को 1-डी सरणी में स्टोर करने के दो तरीके हैं। वे हैं-

  • पंक्ति मेजर
  • कॉलम मेजर

पंक्ति मेजर: पंक्ति प्रमुख में, एक पंक्ति के सभी तत्वों को एक साथ संग्रहीत किया जाता है और फिर यह अगली पंक्ति में चला जाता है।

यदि nXm आकार के 2-डी सरणी के एक तत्व में एक अनुक्रमणिका (i, j) 1-D सरणी में संग्रहीत है, तो 1-D सरणी में इसकी अनुक्रमणिका है

(j) + (i)*m

कॉलम मेजर: कॉलम मेजर में, एक कॉलम के सभी तत्वों को एक साथ संग्रहित किया जाता है और फिर अगले कॉलम को ट्रेस किया जाता है।

यदि nXm आकार के 2-डी सरणी के एक तत्व में एक अनुक्रमणिका (i, j) 1-D सरणी में संग्रहीत है, तो 1-D सरणी में इसकी अनुक्रमणिका है

(i) + (j)*n

समस्या को समझने के लिए एक उदाहरण देखते हैं,

इनपुट: n =3, m =5, (i,j) =(0, 2)

आउटपुट: पंक्ति-प्रमुख =
स्तंभ-प्रमुख =

स्पष्टीकरण:

पंक्ति-प्रमुख =2 + 0*3 =3
कर्नल-मेजर =0 + 2*5 =10

2D से 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

  1. मैं नए का उपयोग करके C++ में 2d सरणी कैसे घोषित करूं?

    एक गतिशील 2D सरणी मूल रूप से सरणियों के लिए पॉइंटर्स की एक सरणी है। यहाँ एक 2D सरणी का आरेख है जिसका आयाम 3 x 4 है। एल्गोरिदम Begin    Declare dimension of the array.    Dynamic allocate 2D array a[][] using new.    Fill the array with the elements.    Print

  1. सी ++ प्रोग्राम सरणी का उपयोग करके स्टैक को लागू करने के लिए

    स्टैक एक सार डेटा संरचना है जिसमें तत्वों का संग्रह होता है। स्टैक LIFO तंत्र को लागू करता है यानी अंत में धकेले जाने वाले तत्व को पहले पॉप आउट किया जाता है। स्टैक में कुछ सिद्धांत संचालन हैं - पुश - यह स्टैक के शीर्ष पर डेटा मान जोड़ता है। पॉप - यह स्टैक के शीर्ष पर डेटा मान को हटा देता है

  1. मैं नए का उपयोग करके C++ में द्वि-आयामी सरणी कैसे घोषित करूं?

    एक गतिशील 2D सरणी मूल रूप से सरणियों के लिए पॉइंटर्स की एक सरणी है। तो आपको सबसे पहले पॉइंटर्स के ऐरे को पॉइंटर्स से इनिशियलाइज़ करना होगा और फिर प्रत्येक 1d ऐरे को लूप में इनिशियलाइज़ करना होगा। उदाहरण #include<iostream> using namespace std; int main() {    int rows = 3, cols = 4;