Two Dimensional Array in C language

    Two Dimensional Array

    इस अध्याय से पहले वाले अध्याय  में हमने one dimensional array(वन डाइमेंशनल एरे) को समझाता इस अध्याय में हम two dimensional array(टू डाइमेंशनल एरे)  को explain(एक्सप्लेन) करेंगे। 
    कुछ परिस्थितियों one dimensional array(वन डाइमेंशनल एरे) वैल्यू को स्टोर करने के लिए उपयुक्त नहीं रहता है। उदाहरण के लिए एक ही कक्षा के 10 student(विद्यार्थियों) के हिन्दी   तथा गणित के प्राप्तांक स्टोर कराने हो तो इसके लिए दो अलग-अलग एरे बनाने होंगे एक हिन्दी    के लिए तथा दूसरा गणित के लिए   प्राप्तांक स्टोर कराने के लिए। 

    यही कार्य एक ही अरे के माध्यम से भी किया जा सकता है। इसके लिए हमें two dimensional array(टू डाइमेंशनल एरे) बनाना होगा। 

    टू डाइमेंशनल array को एक टेबल के रूप में समझा जा सकता है इसमें 1 से अधिक rows(पंक्तियां) तथा columns(कॉलम) होते हैं। अतः यदि हमें 10 विद्यार्थियों के गणित और हिन्दी    के अंक स्टोर करवाने हैं तो हमें  दो कॉलम तथा 10 पंक्तियों की आवश्यकता होगी। टू डाइमेंशनल एरे की एक डाइमेंशनल में हम हिन्दी    तथा दूसरे डाइमेंशनल में गणित के अंक स्टोर कर सकते हैं। 


    Two Dimensional Array, w3 coding club, w3codingclub

    Two-dimensional array को declare करने का तरीका:- 

        data_type variable_name[dimension_1][dimension_2]   

    Example:-

    int marks[2][10];

    Example:-

    इस उदाहरण में [2]x[2] के एक टू डाइमेंशनल array में वैल्यू स्टोर करवाकर उसे प्रिंट करवाया गया है। 


        #include <stdio.h>
        #include <conio.h>
        void main()
        
           int a[2][2];
           a[0][0= 1;
           a[0][1= 2;
           a[1][0= 3;
           a[1][1= 4;
           printf("\n%d",a[0][0]);
           printf("  %d",a[0][1]);    
           printf("\n%d",a[1][0]);
           printf("  %d",a[1][1]);
           getch();
        }

    Output:-

    1   2
    3   4

    Explain Example:-

    ऊपर दिए गए उदाहरण में डाटा मेमोरी में निम्न 👇 प्रकार स्टोर होगाTwo Dimensional Array, w3 coding club, w3codingclub

    ध्यान दें कि एरे टू डाइमेंशनल है लेकिन फिर भी डाटा मेमोरी में क्रमागत ही स्टोर हुआ है इसका कारण यह है कि मैं मेरी को सिंगल डाइमेंशनल ही होती है ऐसे में टू डाइमेंशनल एरे का डाटा मेमोरी में स्टोर होने से पहले एक क्रम में जमा दिया जाता है। सरल शब्दों में टू डाइमेंशनल अरे की वैल्यू मेमोरी में स्टोर होने से पहले एक क्रम में सेट हो जाती है और इस क्रम में सर्वप्रथम प्रथम पंक्ति [index 0] सभी वैल्यू स्टील हो जाती है, तत्पश्चात द्वितीय पंक्ति की वैल्यू स्टोर हो जाती है। यही क्रम से इस पंक्तियों के लिए अपनाया जाता है। 

    Example:-


        #include <stdio.h>
        #include <conio.h>
        void main()    
        {
           int a[2][2], row, col;
           for (row = 0; row <=1; row++)
           {
              for (col = 0; col <=1; col++)
              {
                 printf("\nEnter a Number : ");            
                 scanf("%d",&a[row][col]);
              }
           }
           for (row = 0; row <=1; row++)
           {
              for (col = 0; col <=1; col++)
              {
                 printf(%d ",a[row][col]);
              }
              printf("\n");
           }
           getch();
        }

    Output:-

    Enter a Number : 5
    Enter a Number : 6
    Enter a Number : 4
    Enter a Number : 2

    5   6
    4   2


    ऊपर दिए गए उदाहरण में प्रथम लूप में user से डाटा इनपुट में लिया जा रहा है। इनपुट की गई वैल्यू सीधे एरे a के उचित row तथा col index(इंडेक्स) पर हो रही है। यहां यह ध्यान रखा जाना चाहिए कि row तथा col का मान एरे की सीमा से बाहर ना चला जाए।

    चूंकि c language(सी लैंग्वेज) का compiler(कंपाइलर) यह जांच नहीं करता कि जिस index number(इंडेक्स नंबर) पर डाटा स्टोर किया जा रहा है वह एरे declaration(डिक्लेरेशन) में दिए कर डाटा dimension(डायमेंशन) से अधिक तो नहीं है, अतः यदि प्रोग्राम में declare(डिक्लेअर) किए गए dimension(डायमेंशन) से आगे के index पर भी वैल्यू स्टोर करवाई जाए तो कोई error नहीं आएगी।
    किंतु इसकी संभावना जरूर है कि ऐसा करने से परिणाम गलत आए।
    अतः यदि उपरोक्त प्रोग्राम में   for(row=0; row<=1; row++)  की जगह  for(row=0; row<=4; row++)   भी कर दिया जाए तो प्रोग्राम को कंपाइल करते वक्त error नहीं आएगी। हां, यह जरूर हो सकता है कि परिणाम गलत आ जाए।

    Post a Comment

    0 Comments