Multi Dimensional Array in C Language

    Multi-Dimensional Array in C Language

    One dimensional, two dimensional की भांति ही Array के डायमेंशन इससे अधिक भी हो सकते हैं। उदाहरण के लिए यदि Three dimensional Array बनाना हो तो इसके लिए निम्न प्रारूप प्रयोग किया जाएगा। 

    data_type variable_name[dimension_1][dimension_2][dimension_3]; 

    Example:-

    float marks[2][10][3];

    👆 ऊपर दिए गए उदाहरण में 60 फ्लोट वैल्यू स्टोर कराई जा सकती है। इन्हें प्रयोग करने का तरीका वैसे ही रहेगा जैसे two dimensional(टू डाइमेंशनल) एरे का प्रयोग करने का होता है। अंतर सिर्फ इतना होगा कि इसमें एक अतिरिक्त डायमेंशन को प्रयोग करने हेतु प्रोग्राम में व्यवस्था करनी होगी।

    ऐसे सभी एरे जो एक से अधिक डायमेंशन उपलब्ध कराते हैं, multi dimension(बहु डायमेंशन) एरे कहलाते हैं।
    इस प्रकार two dimensional array(टू डाइमेंशनल एरे) भी multi dimensional(बहू डाइमेंशनल) एरे का ही एक प्रकार हुआ। चूंकि दो से अधिक डाइमेंशनल वाले एरे का प्रयोग करने पर प्रोग्राम की जटिलता बढ़ जाती है, अतः सामान्यतः इसका प्रयोग नहीं किया जाता है।

    Example:-

    3D array


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int a[2][2][2],x,y,z;
           for ( x = 0; x <2; x++)
           {
              for (y = 0; y < 2; y++)
              {
                 for (z = 0; z < 2; z++)
                 {
                    printf("\nEnter value for a[%d][%d][%d] : ",x,y,z);      
                    scanf("%d",&a[x][y][z]);
                 }         
              }      
           }
           printf("You Entered : \n");
           for (x = 0; x < 2; x++)
           {
              for (y = 0; y < 2; y++)
              {
                 for (z = 0; z < 2; z++)
                 {
                    printf("\na[%d][%d][%d] : %d",x,y,z, a[x][y][z]);    
                 }         
              }      
           }
           getch();
        }

    Output:-

    Enter value for a[0][0][0] : 4
    Enter value for a[0][0][1] : 8
    Enter value for a[0][1][0] : 7
    Enter value for a[0][1][1] : 8
    Enter value for a[1][0][0] : 6
    Enter value for a[1][0][1] : 4
    Enter value for a[1][1][0] : 2
    Enter value for a[1][1][1] : 2

    You Entered :
    a[0][0][0] : 4
    a[0][0][1] : 8
    a[0][1][0] : 7
    a[0][1][1] : 8
    a[1][0][0] : 6
    a[1][0][1] : 4
    a[1][1][0] : 2
    a[1][1][1] : 2

    Explain Example 

    उपरोक्त उदाहरण में सबसे बाहर वाला लुप (x) एरे के 1st dimension(प्रथम डायमेंशन), बीच वाला लुप (y) 2nd  dimension(द्वितीय डायमेंशन) तथा सबसे अंदर वाला लुप (z) 3rd dimension(तीसरे डायमेंशन) लेने के लिए कार्य कर रहा हैं। 

    One-dimension, two-dimensional, and three-dimensional another example:-

    1.) एक 1-D एरे की विभिन्न वैल्यू को जोड़ने का  प्रोग्राम:-


        #include <stdio.h>
        #include <conio.h>
        void main()    
        {
           int a[5], t = 0, c;
           for (c = 0; c < 5; c++)
           {
              printf("Enter a Number : ");            
              scanf("%d"&a[c]);
           }
           for (c = 0; c < 5; c++)
           {
              = t + a[c];
           }
           printf("\nTotal = %d", t);
           getch();
        }

    Output:-

    Enter a Number : 5
    Enter a Number : 8
    Enter a Number : 6
    Enter a Number : 9
    Enter a Number : 4Total = 32

    👆 यह एक साधारण सा प्रोग्राम है जिसमें Arrays के विभिन्न एलिमेंट का जोड़  वेरिएबल t  में स्टोर करवाया जा रहा है। 


    2.) दो one dimensional(वन डाइमेंशनल) Array(matrix) को गुणा करने का प्रोग्राम:-


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int a[5], b[5],m[5],x;
          printf("Enter values for 1st Array \n");
          for (x = 0; x < 5; x++)
          {
             printf("Enter a Number : ");
             scanf("%d",&a[x]);
          }
          printf("\nEnter value for 2nd Array\n");
          for (x = 0; x < 5; x++)
          {
             printf("Enter a Number : ");
             scanf("%d",&b[x]);
          }
           printf("\nResult ");
           for (x = 0; x < 5; x++)
           {
              m[x] = a[x]*b[x];
              printf("\nvalue of %d x %d =  %d",a[x],b[x],m[x]);      
           }
           getch();
        }

    Output:-

    Enter values for 1st Array 
    Enter a Number : 2
    Enter a Number : 4
    Enter a Number : 5
    Enter a Number : 0
    Enter a Number : 8

    Enter value for 2nd Array
    Enter a Number : 7
    Enter a Number : 8
    Enter a Number : 9
    Enter a Number : 4
    Enter a Number : 3

    Result 
    value of  2 x 7 =  14
    value of  4 x 8 =  32
    value of  5 x 9 =  45
    value of  0 x 4 =  0
    value of  8 x 3 =  24


    3.) One-dimensional(वन-डाइमेंशनल) एरे की विभिन्न वैल्यू को क्रमागत जमाने का प्रोग्राम:-


        #include <stdio.h>    
        #include <conio.h>    
        void main()
        {
           int a[10], c, t, d;
           for (c = 0; c < 10; c++)
           {
              printf("Enter a Number : ");
              scanf("%d"&a[c]);
           }
           for (c = 0; c < 9; c++)
           {
              for (d = c + 1; d < 10; d++)              
              {
                 if (a[c] > a[d])
                 {
                    t = a[c];
                    a[c] = a[d];
                    a[d] = t;
                       }
              }
           }
           for (c = 0; c < 10; c++)
           {
              printf("\n%d",a[c]);
           }
       
           getch();
        }

    Output:-

    Enter a Number : 52
    Enter a Number : 14
    Enter a Number : 25
    Enter a Number : 62
    Enter a Number : 55
    Enter a Number : 45
    Enter a Number : 75
    Enter a Number : 66
    Enter a Number : 77
    Enter a Number : 85

    14
    25
    45
    52
    55
    62
    66
    75
    77
    85

    👆 ऊपर दिए गए उदाहरण में लूप  की नेस्टिंग की गई हैं।  बाहरी लुप  कूल संख्याओं जितनी बार चल रहा हैं। आंतरिक लूप  बाहरी लूप (c)  के मान से एरे के अंतिम एलिमेंट तक चलते हुए जांच कर रहा है कि कोई एलिमेंट अगले एलिमेंट से बड़ा है क्या। यदि ऐसा पाया जाता है तो उन दोनों एलिमेंट के मान को पलट दिया जा रहा है।

     इस प्रकार आंतरिक लूप  की समाप्ति कर सबसे छोटी संख्या एरे  के आरंभिक एलिमेंट पर आ रही हैं। जब वही आंतरिक लूप द्वितीय बार चलेगा तो प्रथम संख्या को छोड़कर शेष संख्या में तुलना की जाएगी और अंततः अगली छोटी संख्या प्रथम छोटी संख्या के बाद पोजीशन हो जाएगी। यही कर्म अंत तक चलेगा। निम्न टेबल में दर्शाया गया है कि जब आंतरिक रूप से समाप्त होगा उस वक्त एरे की स्थिति क्या रहेगी। 

    Multi Dimensional Array in C Language, w3 coding club, w3codingclub

    Most important points in Array:-

    (i) एक से अधिक value(वैल्यू) को एक ही वेरिएबल में स्टोर करने के लिए Array(एरे) का प्रयोग किया जाता है। 

    (ii) एरे दो प्रकार के होते हैं- one-dimensional(वन डाइमेंशनल) एरे तथा multi-dimensional(मल्टी डाइमेंशनल) एरे। 

    (iii) One-dimensional(वन डाइमेंशनल) एरे को एक लिस्ट के रूप में समझा जा सकता है। वही टू डाइमेंशनल एरे को एक table(टेबल) के रूप में समझा जा सकता है। 

    (iv) I ndex number(इंडेक्स नंबर) यह बताता है कि एरे  की किस position(पोजीशन) वाली संख्या पर गणना की जानी है। इंडेक्स नंबर को subscript(सब्सक्रिप्ट) भी कहा जाता है। 

    (v)  "C" language(सी लैंग्वेज) में इंडेक्स नंबर 0 से प्रारंभ होता है। 

    (vi)  एरे के सभी एलिमेंट्स मेमोरी में एक कर्म हीस्थान गिरते हैं। 

    (vii) "C" language(सी लैंग्वेज) में एरे मेमोरी में रूम मैनेज फॉर्म मिस्टर होते हैं। 

    (viii)   सी लैंग्वेज का कंपाइलर यह जांच नहीं करता कि जिस इंडेक्स नंबर का डाटा स्टोर किया जा रहा है वह अरे डिक्लेरेशन में दिए गए डायमेंशन से अधिक तो नहीं हैं। इसे ब्राउन्ड चेकिंग के नाम से जाना जाता हैं। अतः यह यूजर को ध्यान रखना होता है कि डाटा एरे की सीमा के बाहर स्टोर ना हो,  अन्यथा हो सकता है कि परिणाम ही गलत आ जाए।  

    Post a Comment

    0 Comments