C++ Arrays -W3 Coding club

जब हमें एक ही प्रकार की एक से अधिक वैल्यूज को स्टोर कराना होता है तो उसके लिए एक से अधिक वेरिएबल्स का प्रयोग किया जा सकता है किन्तु ऐसा करने पर उन सभी वेरिएबल्स को प्रयोग में लेना आसान नहीं रहता है। उदाहरण के लिए एक कक्षा के 100 विद्यार्थियों के अंक स्टोर कराने के लिए 100 वेरिएबल्स का प्रयोग करना उचित नहीं है।

ऐसी स्थिति में दूसरा और बेहतर विकल्प Array(एरे) के रूप में सामने आता है। Array(एरे) में हम एक ही Variable(वेरिएबल) में एक से अधिक वैल्यूज़ स्टोर कर सकते हैं। अतः यह कहा जा सकता है कि Array(एरे)  से आशय एक से अधिक वैल्यूज के store करने  से है।

One Dimensional Array(वन डायमेंशनल एरे)

Array(एरे) बनाने के लिए हमें प्रारंभ में ही यह बताना होता है कि हम उस Array(एरे) में कितनी वैल्यूज स्टोर करेंगे। यह कार्य डायमेशन के माध्यम से किया जाता है। One diamensional Array(वन डायमेंशनल एरे) को हम एक लिस्ट के समान मान सकते हैं जिसमें एक से अधिक मैम्बर होते हैं। 

C++ में वन डायमेंशनल एरे बनाने के लिए पहले उसे डिक्लेयर करना होता है।


उपरोक्त उदाहरण में 5 integer values(इंटीजर वैल्यूज़) को स्टोर करने के लिए नाम का एरे बनाया गया है। इस प्रकार यह कहा जा सकता है कि एरे को डिक्लेयर करने के लिए प्रारूप निम्न प्रकार है:

 data_type array_name][dimenston];

एरे में वैल्यू स्टोर करते समय यह बताना होता है कि वह वैल्यू किस index number (क्रम) पर स्टोर होगी इंडेक्स नम्बर zero(0) से प्रारंभ होता है। उपरोक्त उदाहरण में 5 वैल्यूज के लिए index number  0, 1 2 3 तथा 4 होंगे। इंडेक्स नम्बर, वैल्यू की एरे में position (पोजिशन) बताता है। 

एरे में वैल्यू स्टोर कराने के लिए प्रारूप निम्न प्रकार है:

array_name[index_number] = value;

Example

Array, codinghant
या
Array, codinghant

Example:-

नीचे दिए गए उदाहरण में एक एरे में पाच संख्याएं स्टोर कर उन्हें प्रिंट करवाया गया है।


    // PROGRAM TO DEMONSTATRATE 1-D Array                
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
        int a[5];
        a[0] = 1;
        a[1] = 2;
        a[2] = 15;
        a[3] = 45;
        a[4] = 75;
        cout<<endl<<a[0];
        cout<<endl<<a[1];
        cout<<endl<<a[2];
        cout<<endl<<a[3];
        cout<<endl<<a[4];
        getch();
    }

Output:-

1
2
15
45
75

Explain Example:-

उपरोक्त उदाहरण में डेटा मैमोरी में निम्न प्रकार स्टोर होगा

ध्यान दें कि Array(एरे) के सभी एलीमेंट्स (सभी वैल्यूज) मैमोरी में एक क्रम में स्थान घेरते हैं। चूंकि उपरोक्त उदाहरण में एरे का Data Type(डेटा टाइप)  Integer(इंटीजर) था. और Integer(इंटीजर) Number दो byte(बाइट) घेरती है, अतः प्रत्येक मैमोरी सेल की लोकेशन में दो का अंतर है।

Example:-

उदाहरण नीचे दिए गए उदाहरण में पाँच संख्याओं का एक एरे बनाया गया है तथा उसमें यूजर से बैल्यूज लेकर प्रिंट किया गया है।


    // PROGRAM TO STORE VALUE IN ARRAY & PRINT THEM USING LOOP
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
        int a[5],c;
        for ( c = 0; c <=4; c++)
        {
            cout<<"Enter a Number : ";
            cin>>a[c];
        }
        cout<<"You Entered : "<<endl;
        for ( c = 0; c <=4; c++)
        {
            cout<<a[c]<<endl;
        }      
        getch();
    }

Output:-

Enter a Number : 2
Enter a Number : 3
Enter a Number : 4
Enter a Number : 1
Enter a Number : 5
You Entered : 
2
3
4
1
5

Explain Example:-

उपरोक्त उदाहरण में User( यूज़र)  से प्रथम लूप में वैल्यूज़ इनपुट में ली गई है। ध्यान दें कि इ लेते समय तथा प्रिंट कराते समय Index Number(इंडेक्स नम्बर) के लिए वेरिएबल का प्रयोग किया गया है।  

Example:-

नीचे दिए गए उदाहरण में एक एरे में यूज़र से पांच संख्याएं लेकर उनमें से सबसे बड़ी संख्या ज्ञात की गई है।


    // PROGRAM TO   PRINT  LARGEST NUMBER OF ARRAY
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
        int a[5], c, max;
        for (c = 0; c <= 4; c++)
        {
            cout << "Enter a Number : ";
            cin >> a[c];
        }
        for (c = 0; c <= 4; c++)
        {
            if (c == 0)
            {
                max = a[c];
            }
            if (a[c] > max)
            {
                max = a[c];
            }
        }
        cout << "\n Largest Number is : " << max;
        getch();
    }

Output:-

Enter a Number : 5
Enter a Number : 65
Enter a Number : 23
Enter a Number : 4
Enter a Number : 8
 Largest Number is : 65

Explain Example 

उपरोक्त उदाहरण में सर्वप्रथम एरे में सभी संख्याएं स्टोर कर ली गई हैं। तत्पश्चात् अगले लूप में तुलना करते हुए बड़ी संख्या को max नामक वेरिएबल में स्टोर कराया जा रहा है। ध्यान दें कि जब यह लूप प्रथम बार रन होगा तो c का मान  0  होने के कारण यह if(c=0) वाले ब्लॉक में प्रवेश कर जाएगा। इससे जो भी संख्या a के Index number   c  (अर्थात 0) पर होगी, उसे सबसे बड़ी संख्या मान लिया जाएगा। तत्पश्चात ही उस संख्या से शेष संख्याओं की तुलना कर सबसे बड़ी संख्या ज्ञात की जाएगी।


Two Dimensional Array(टू डायमेंशनल एरे)

कुछ परिस्थितियों में One diamensional Array(वन डायमेशनल एरे) वैल्यूज को स्टोर करने के लिए उपयुक्त नहीं रहता है। उदाहरण के लिए एक ही कक्षा के 10 विद्यार्थियों के अंग्रेजी तथा गणित के प्राप्तांक स्टोर कराने हो तो इसके लिए दो अलग-अलग एरे बनाने होंगे, एक अंग्रेजी के तथा दूसरा गणित के प्राप्तांक स्टोर कराने के लिए। यही कार्य एक ही एरे के माध्यम से भी किया जा सकता है। इसके लिए हमें Two Dimensional Array (टू डायमेशनल एरे) बनाना होगा।

Two Dimensional Array (टू डायमेशनल एरे)  को एक टेबल के रूप में समझा जा सकता है, जिसमें एक से अधिक Row & Column(पंक्तियां तथा कॉलम) होते हैं। अतः यह कहा जा सकता है कि Data(डेटा) को Store(स्टोर) करवाने के लिए हमें निम्नानुसार दो Column(कॉलम) तथा 10 पंक्तियों की आवश्यकता होगी। इस Two Dimensional Array (टू डायमेशनल एरे)   के एक Dimensional (डायमेंशन) में हम अंग्रेज़ी तथा दूसरे Dimensional (डायमेंशन) में गणित के अंक स्टोर करवा सकते हैं।

two Dimensional Array, C++ Arrays -W3 Coding club, W3codingclub


Two Dimensional Array को declare करने का तरीका 

data_type array_name[Dimensional_1] [Dimensional_2];

Example:-

        int marks[2][10];

Example:-

नीचे दिए गए Example में [2]x[2] के Two Dimensional Array(टू डिमेन्शनल एरे) में वैल्यू स्टोर करवा कर उन्हे प्रिन्ट करवाया गया हैं।  


    // PROGRAM TO   PRINT  LARGEST NUMBER OF ARRAY
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
        int a[2][2];
        a[0][0] = 1;
        a[0][1] = 2;
        a[1][0] = 3;
        a[1][1] = 4;
        cout << a[0][0];
        cout << "," << a[0][1] << endl;
        cout << a[1][0];
        cout << "," << a[1][1];

        getch();
    }

Output:-

1,    2
3,    4

Explain Example:-

Two Dimensional Array में  Memory मे data निम्न प्रकार स्टोर होगा 

ध्यान दें कि यह Array Two Dimensional (एरे टू डायमेंशनल) है. लेकिन फिर भी डेटा मैमोरी में क्रमागत ही स्टोर हुआ है। इसका कारण यह है कि मैमोरी तो Single Dimensional(सिंगल डायमेशनल ) ही होती है, ऐसे में Two Dimensional Array(टू डायमेंशनल एरे) का डेटा मैमोरी में स्टोर होने से पहले एक क्रम में जमा दिया जाता है। यह क्रम रो मेजर फॉर्म (row major form) में होता है। सरल शब्दों में Two Dimensional Array(टू डायमेंशनल एरे)  की वैल्यूज मैमोरी में स्टोर होने से पहले एक क्रम में सेट हो जाती है और इस क्रम में सर्वप्रथम प्रथम पंक्ति (इंडेक्स 0) की सभी वैल्यूज स्टोर होती है. तत्पश्चात् द्वितीय पंक्ति की वैल्यूज स्टोर होती है। यही क्रम शेष पंक्तियों के लिए अपनाया जाता है।

Example:-

उदाहरण: निम्न उदाहरण में 2X2 के मैट्रिक्स के लिए वैल्यूज़ इनपुट में लेते हुए उन्हें प्रिंट कराया गया है।


    // PROGRAM TO   DEMONSTRATE 2D ARRAY
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
        int arry[2][2], row, col;
        for (row = 0; row < 2; row++)
        {
            for (col = 0; col < 2; col++)
            {
                cout << "Enter a Number : ";
                cin >> arry[row][col];
            }
        }
        for (row = 0; row < 2; row++)
        {
            for (col = 0; col < 2; col++)
            {
                cout << "  " << arry[row][col];
            }
            cout << endl;
        }
        getch();
    }

Output:-

Enter a Number : 1
Enter a Number : 2
Enter a Number : 3 
Enter a Number : 4
  1  2
  3  4

Explain Example:-

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

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


Multi Dimensional Array(मल्टी डायमेंशनल एरे)

वन डायमेंशनल व टू डायमेंशनल की भांति ही एरे के डायमेंशन इससे अधिक भी हो सकते हैं।  उदाहरण के लिए यदि Three Dimensional Arry(थ्री डायमेंशनल एरे) बनाना हो तो उसके लिए निम्न प्रारूप प्रयोग किया जाएगा:

data_type array_name [dimension_1] [dimention_2] [dimension_3] ; 

Example:-

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

उपरोक्त उदाहरण में कुल 60 Float Value(फ्लोट वैल्यूज़) स्टोर कराई जा सकती हैं। इन्हें प्रयोग करने का तरीका वैसे ही रहेगा जैसे Two   Dimensional Array(टू डायमेंशनल एरे) को प्रयोग करने का था। अंतर सिर्फ इतना होगा कि हमें एक अतिरिक्त डायमेंशन को प्रयोग करने हेतु प्रोग्राम में व्यवस्था करनी होगी।

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

Example:-

निम्न Example में 3-D Array(एरे) का प्रयोग किया गया हैं :-


    // PROGRAM TO   DEMONSTRATE multi Dimensional ARRAY
    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()  
    {
        int arry[2][2][2], x, y, z;
        for (x = 0; x < 2; x++)
        {
            for (y = 0; y < 2; y++)
            {
                for (z = 0; z < 2; z++)
                {
                    cout << "arry Enter a Number for arry[" << x << "][" << y << "][" << z << "] : ";
                    cin >> arry[x][y][z];                                                                 
            }
        }
        for (x = 0; x < 2; x++)
        {
            for (y = 0; y < 2; y++)
            {
                for (z = 0; z < 2; z++)
                {
                    cout << "\narry[" << x << "][" << y << "][" << z << "] : " << arry[x][y][z];
                }
            }
        }
        getch();
    }

Output:-

Enter a Number for arry[0][0][0] : 2
Enter a Number for arry[0][0][1] : 4
Enter a Number for arry[0][1][0] : 5
Enter a Number for arry[0][1][1] : 4
Enter a Number for arry[1][0][0] : 1
Enter a Number for arry[1][0][1] : 5
Enter a Number for arry[1][1][0] : 7
Enter a Number for arry[1][1][1] : 3

arry[0][0][0] : 2
arry[0][0][1] : 4
arry[0][1][0] : 5
arry[0][1][1] : 4
arry[1][0][0] : 1
arry[1][0][1] : 5
arry[1][1][0] : 7
arry[1][1][1] : 3

Explain Example:-

उपरोक्त उदाहरण में सबसे बाहर वाला लूप (x) एरे के प्रथम डायमेंशन, बीच वाला लूप (y) द्वितीय डायमेंशन तथा सबसे अंदर वाला लूप (z) तीसरे डायमेंशन को प्रयोग में लेने के लिए कार्य कर रहा है।

Post a Comment

0 Comments