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

बहुआयामी सरणी (Multidimensional Array) क्या है? प्रोग्राम के साथ समझाएं

C भाषा तीन (या अधिक) आयामों की सरणियों की अनुमति देती है। इसे बहुआयामी सरणी (Multidimensional Array) कहा जाता है। सटीक सीमा कंपाइलर द्वारा निर्धारित की जाती है।

सिंटैक्स

datatype array_name[size1][size2]...[sizeN];

उदाहरण के लिए, तीन-आयामी सरणी के लिए:

int a[3][3][3];

एलिमेंट्स की संख्या = 3*3*3 = 27 एलिमेंट्स

उदाहरण प्रोग्राम

#include <stdio.h> 

int main() {
    int a[2][2][2] = {1, 2, 3, 4, 5, 6, 7, 8};
    int i, j, k;
    
    printf("Elements of the array are:\n");
    for(i = 0; i < 2; i++) {
        for(j = 0; j < 2; j++) {
            for(k = 0; k < 2; k++) {
                printf("%d ", a[i][j][k]);
            }
        }
    }
    return 0;
}

आउटपुट

Elements of the array are:
1 2 3 4 5 6 7 8

व्याख्या

  • a[2][2][2] - 3 आयाम: 2 प्लेन्स, प्रत्येक 2x2
  • मेमोरी में रैखिक रूप से संग्रहीत: a[0][0][0], a[0][0][1], a[0][1][0], a[0][1][1], a[1][0][0]...
  • आरंभीकरण सूची रैखिक क्रम का पालन करती है।

मेमोरी लेआउट (3D)

Plane 0 (i=0):        Plane 1 (i=1):
a[0][0][0] a[0][0][1]   a[1][0][0] a[1][0][1]
a[0][1][0] a[0][1][1]   a[1][1][0] a[1][1][1]

Index order: 0,1,2,3,  4,5,6,7

पॉइंटर अंकगणित के साथ एक्सेस

int a[2][3][4];
int *p = &a[0][0][0];

// a[i][j][k] एक्सेस करने के लिए:
*(p + (i * 3 * 4) + (j * 4) + k)

// सामान्य फॉर्मूला N-डायमेंशन के लिए:
offset = i1*(d2*d3*...*dN) + i2*(d3*...*dN) + ... + iN

व्यावहारिक उपयोग के मामले

  • 3D: 3D ग्राफिक्स (वॉक्सेल्स), मेडिकल इमेजिंग (MRI/CT स्लाइस), गेम मैप्स
  • 4D: टाइम-सीरीज 3D डेटा, टेंसर ऑपरेशन्स (डीप लर्निंग)
  • 2D: मैट्रिक्स, इमेज प्रोसेसिंग, स्प्रेडशीट्स, बोर्ड गेम्स

डायनामिक बहुआयामी सरणी

रनटाइम पर आकार के लिए:

// 3D डायनामिक आवंटन
int ***arr = malloc(d1 * sizeof(int**));
for(int i = 0; i < d1; i++) {
    arr[i] = malloc(d2 * sizeof(int*));
    for(int j = 0; j < d2; j++) {
        arr[i][j] = malloc(d3 * sizeof(int));
    }
}

// एक्सेस: arr[i][j][k]
// मुक्त करना: रिवर्स ऑर्डर में free()

नोट

  • स्टैक पर बड़ी बहुआयामी सरणी स्टैक ओवरफ्लो का कारण बन सकती है।
  • बड़े डेटा के लिए हीप आवंटन (malloc) या स्टैटिक/ग्लोबल घोषणा उपयोग करें।
  • प्रदर्शन के लिए, सन्निहित (contiguous) आवंटन कैश-फ्रेंडली है।
  1. जावास्क्रिप्ट में ऐरे स्प्लिसिंग क्या है? उदाहरण सहित समझाएं। जावास्क्रिप्ट में ऐरे स्प्लिसिंग क्या है? उदाहरण सहित समझाएं।

    परिचय ऐरे स्प्लिसिंग का अर्थ है Array.splice() मेथड का उपयोग करके ऐरे से आइटम्स जोड़ना या हटाना। हटाए गए आइटम्स एक ऐरे के रूप में लौटाए जाते हैं। यह मेथड मूल ऐरे को म्यूटेट करता है। सिंटैक्स array.splice(startIndex, deleteCount, item1, item2, ...) startIndex - परिवर्तन शुरू करने का इंडेक्स delete

  1. इमेज एरे क्या है? C++ में उदाहरण सहित समझाएं इमेज एरे क्या है? C++ में उदाहरण सहित समझाएं

    एरे डेटा के संग्रह को संग्रहीत और पुनर्प्राप्त करने का एक सुविधाजनक तरीका है। OpenCV में, हम इस अवधारणा का उपयोग कई इमेज को इमेज एरे में लोड करने और उन्हें एरे के इंडेक्स नंबर का उपयोग करके दिखाने के लिए कर सकते हैं। निम्नलिखित प्रोग्राम एक मैट्रिक्स एरे में कई इमेज लोड करता है और इंडेक्स नंबर द्वार

  1. - C# प्रोग्राम: सरणी से तत्वों के साथ List बनाएं

    एक सरणी सेट करें: int[] val = new int[5]; // पूर्णांक तत्व val[0] = 15; val[1] = 25; val[2] = 40; val[3] = 58; val[4] = 70; अब एक सूची सेट करें और उसमें सरणी जोड़ें: List<int> myList = new List<int>(val); निम्न कोड है: उदाहरण using System; using System.Collections.Generic; public