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

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


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

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

प्रोग्रामिंग में 2-D सरणी को 1-D सरणी में संग्रहीत करने के दो तरीके हैं:

  • रो मेजर (Row Major)
  • कॉलम मेजर (Column Major)

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

यदि आकार n×m की 2-D सरणी के एक तत्व का सूचकांक (i, j) है, तो 1-D सरणी में इसका सूचकांक है:

(j) + (i)*m

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

यदि आकार n×m की 2-D सरणी के एक तत्व का सूचकांक (i, j) है, तो 1-D सरणी में इसका सूचकांक है:

(i) + (j)*n

उदाहरण से समझते हैं:

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

आउटपुट: रो-मेजर = 2, कॉलम-मेजर = 10

व्याख्या:

रो-मेजर = 2 + 0×3 = 2
कॉलम-मेजर = 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 * m + j; 
    cout << "Index of element at index (0, 2) in 1-D array using row-major is " << rowMajorIndex << endl; 
    int colMajorIndex = i + j * n; 
    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 का उपयोग करके 2D ऐरे कैसे घोषित करें C++ में new का उपयोग करके 2D ऐरे कैसे घोषित करें

    एक डायनामिक 2D ऐरे मूल रूप से ऐरे के पॉइंटर्स का ऐरे होता है। यहां 3 x 4 आयाम वाले 2D ऐरे का एक आरेख है। एल्गोरिदम Begin ऐरे के आयाम घोषित करें। new का उपयोग करके 2D ऐरे a[][] को डायनामिक रूप से आवंटित करें। ऐरे को तत्वों से भरें। ऐरे प्रिंट करें। इसे हटाकर मेमोरी साफ़ करें। End

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके स्टैक कार्यान्वयन

    ऐरे आधारित स्टैक निश्चित आकार की सरणी और top सूचकांक का उपयोग करके स्टैक कार्यान्वयन। LIFO सिद्धांत का पालन करता है। C++ प्रोग्राम उदाहरण = MAX - 1) cout << Stack Overflow << endl; else { top++; stack[top] = val; } } void pop() { if (top = 0; i--)

  1. - C++ में new का उपयोग करके टू-डायमेंशनल ऐरे कैसे डिक्लेयर करें?

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