Multidimensional Array in C Programming in Hindi

इस tutorial में हम सीखेंगे की कैसे C programming में multidimensional arrays जैसे की 2D array और 3D array का use अपने programs में कर सकते हैं.

सबसे पहले हम multidimensional arrays की declaration, initialization करना सीखेंगे और इसके बाद multidimensional array में user से input लेना और elements को access करना सीखेंगे.

Multidimensional array को समझने के लिए पहले आपको array का basic और nested loops की जानकारी होना जरूरी है. इसलिए अगर आपने हमारे ये दोनों tutorials नहीं पढ़ें तो पहले उन्हें जरूर पढ़ लें.

Array basic पढ़ने के लिए इससे पहले वाला tutorial पढ़ें और nested loops वाला tutorial पढ़ने के लिए नीचे दिए गए link पर click करके उस tutorial को पढ़ लें.

Read: Nested Loops in C Programming in Hindi

Multi Dimensional Array क्या है?

इससे पहले वाले tutorial में हमने जिस array type का use किया था वो single dimensional array था.

C programming में आप single dimensional  के अलावा two (2D), three (3D), four (4D) या उससे भी ज्यादा dimensional के arrays create कर सकते हो और इस तरह के arrays को हम multidimensional arrays कहते हैं.

ज्यादा dimensions के array का मतलब है की एक ही array में ज्यादा elements store करना लेकिन इसके साथ ही ज्यादा dimensions arrays के साथ काम करना भी ज्यादा difficult होता है.

इसलिए C programming में ज्यादातर programmers सिर्फ two dimensional (2D) array और three dimensional (3D) array का use करते हैं.

Multi-dimensional Array Syntax:

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

किसी multidimensional array में कितने elements store हो सकते हैं ये आप उसके सभी dimensions के size को multiply करके पता कर सकते हो. 

जैसे num[3][5] array (3*5) 15 elements को store कर सकता है और num[2][3][5] array (2*3*5) 30 elements को store कर सकता है.

आइए अब हम two dimensional (2D) array और three dimensional (3D) array को एक-एक करके अच्छे से detailed में समझते हैं.

Two Dimensional (2D) Array in C Programming

C programming में multidimensional array में सबसे ज्यादा (99%) जो use होता है वो है two dimensional array जिसे हम 2D array भी कहते हैं.

2D array को अच्छे से समझने के लिए हम इसे एक ऐसी table की form में assume करते हैं जिसमें rows और columns दोनों हो.

मैंने यहाँ assume शब्द का use इसलिए किया है क्योंकि 1D array हो या 2D array या 3D array इन सभी को memory में continuous memory ही allocate किया जाता है.

हमें multidimensional arrays को समझने में और इनके साथ काम करने में आसानी हो इसलिए इन्हें table की form में assume करते हैं.

Two Dimensional (2D) Array Syntax:

data_type array_name[row_size][columns_size];

data_type: Array में आप जिस type के elements store करना चाहते हो आपका array भी उसी data type (int, char, float etc.) का होना चाहिए.

array_name: आप C identifier rules को follow करके array को कोई भी नाम दे सकते हो.

array_size: जैसा की मैंने आपको बताया की 2D array को समझने में आसानी हो इसलिए इसे हम table के रूप में assume करते हैं और इसलिए 2D array में array size को हम rows और columns की संख्या (गिनती) में लिखते हैं.

2D array के पहले square brackets [ ] में हम ये बताते हैं की हम 2D array में कितनी rows चाहिए और 2D array के दूसरे square brackets [ ]  में हम ये बताते हैं की हम 2D array में कितनी columns चाहिए.

2D Array declaration examples:

int arr[3][5]
char name[5][20];
float marks[10][5];

Array declare करने से memory में array size के अनुसार array के सभी elements के लिए space allocate हो जाता है.

2D array में भी memory space 1D arry की तरह continuous ही allocate किया जाता है लेकिन 2D array को समझने में आसानी हो इसलिए उसे नीचे दी गयी image की तरह table form में assume करते हैं.

2d array structure

2D Array Initialization in C Language

Array initialization का मतलब है array को values assign करना यानी array में elements store करना.

आप 2 तरह से 2D array initialization कर सकते हो. पहला array declaration के वक्त ही और दूसरा array declaration करने के बाद array index की help से.

2D Array declaration and initialization syntax:

First Method:

data_type array_name[rows][columns] = { value1, value2, value3, ..., ValueN };

Second Method:

data_type array_name[rows][columns] = { {value1, value2, value3}, {value1, value2, value3}, {value1, value2, value3} };

2D Array declaration and initialization example:

First Method:

int arr[2][3] = { 12, 45, 56, 20, 35, 15};

Second Method:

int arr[2][3] = { {12, 45, 56}, {20, 35, 15}};

ऊपर हमने 2 rows और 3 columns का array declare और initialize किया है. First array initialization method में शुरू के 3 elements पहली row के तीनों columns में आ जाएंगे और बाकी के 3 elements दूसरी row के तीनों columns में आ जाएंगे.

2D array को initialize करने का पहला तरीका आसान है लेकिन recommended तरीका नहीं है. 2D array को initialize करने के लिए second method अच्छा माना जाता है.

क्योंकि second method में हम rows को inner braces में divide कर देते हैं जिसकी वजह से 2D array की initialization को समझने में आसानी होती है.

आप ऊपर के दोनों methods में से किसी भी method को use करके 2D array declaration और initialization कर सकते हो. आप नीचे image में देख सकते हो की आपके element 2D array की table में किस तरह store होंगे.

2d array with elements in c programming

इसके अलावा अगर आप 2D array में किसी specific position (index) पर element store या update करना चाहते हो तो आप उसकी row और column indexing बता कर कर सकते हो.

जैसे की मैं ऊपर दिए गए array की 0th row के 1st column में value store या update करना चाहता हूँ तो मुझे row और column दोनों का index बताना होगा. जैसा की आप नीचे देख सकते हो.

arr[0][1] = 20;

2D Array में User से Input कैसे ले?

Single dimensional arrays की तरह multidimensional arrays में भी सभी operations को करने के लिए 99.9% ये possibility रहती है की आप Loops का use करें. 

Single dimensional arrays में हम input लेने के लिए या उसे print कराने के लिए single loop का use करते हैं लेकिन 2D arrays में input लेने के लिए या उसे print कराने के लिए हम nested for loop का use करते हैं.

मैंने नीचे एक nested for loop का pattern program बनाया जिसकी help से हम ये समझेंगे की nested for loop की help से 2D array में input कैसे लेंगे या उसे print कैसे कराएँगे.

#include <stdio.h>
int main()
{
    int i,j;

    for(i=0;i<3;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%d%d ",i,j);
        }
        printf("\n");
    }

    return 0;
}

Output:

00 01 02 03 04
10 11 12 13 14
20 21 22 23 24

Explanation:

आप ऊपर program में जो nested for loop का format (syntax) देख रहे हो हम लगभग सभी 2D array में input लेने या print कराने के लिए लगभग इसी तरह के nested for loop का use करते हैं.

इसमें जो outer loop है उसका use हम 2D array के rows के साथ काम करने के लिए करते हैं और जो inner loop है उसका use हम 2D array के columns के साथ काम करने के लिए करते हैं.

इसके अलावा जैसा की आप output में देख रहे हो i और j variable को print कराने पर जो pattern print हुआ है actual में वो एक [3][5] size के 2D array के index का pattern और इसी इसी pattern की help से हम 2D array में input लेते हैं या उसे print करते हैं.

Take Input in Two Dimensional Array in C:

#include <stdio.h>
int main()
{
    int i,j,arr[3][5];

    for(i=0;i<3;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("Enter %d row %d column element : ",i,j);
            scanf("%d",&arr[i][j]);
        }
    }

    printf("\n2D Array Elements :\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Output:

Enter 0 row 0 column element : 25
Enter 0 row 1 column element : 15
Enter 0 row 2 column element : 85
Enter 0 row 3 column element : 35
Enter 0 row 4 column element : 45
Enter 1 row 0 column element : 65
Enter 1 row 1 column element : 25
Enter 1 row 2 column element : 95
Enter 1 row 3 column element : 35
Enter 1 row 4 column element : 15
Enter 2 row 0 column element : 22
Enter 2 row 1 column element : 36
Enter 2 row 2 column element : 84
Enter 2 row 3 column element : 65
Enter 2 row 4 column element : 32

2D Array Elements :
25 15 85 35 45
65 25 95 35 15
22 36 84 65 32

Three Dimensional (3D) Array in C Programming

जैसा की मैंने आपको ऊपर बताया की C programming में three dimensional (3D) arrays बहुत ज्यादा use नहीं होता है.

इसके अलावा 2D arrays समझने के बाद आपको 3D arrays समझने में ज्यादा problem नहीं होगी क्योंकि इन दोनों declaration, initialization, input लेना या print कराने के syntax में ज्यादा अंतर नहीं होता है.

Three Dimensional (3D) Array Syntax:

data_type array_name[tables][rows][columns];

जैसा की आप syntax में देख सकते हो 3D array के declaration में भी पहले आप array का data type बताते हैं और फिर name और उसके बाद 2D array की तरह rows और columns size. 

बस फर्क ये है की आपको इसमें tables size भी बताना है यानी आप 2D array की तरह rows और columns वाली कितनी tables बनाना चाहते हो.

जैसे हमने नीचे 3 rows 5 columns वाली 3 tables का 3D array declare किया है और उसका format आप नीचे image में देख सकते हो.

int arr[3][3][5];
3d array structure

3D Array declaration and initialization:

int arr[2][3][4] = {
                        {{12, 45, 56, 23},{20, 35, 15, 87},{10, 25, 25, 47}},
                        {{24, 33, 12, 85},{22, 35, 62, 35},{64, 23, 28, 55}}
                    };

3D Array में User से Input कैसे ले?

#include <stdio.h>
int main()
{
    int t,i,j,arr[2][3][5];

    for(t=0;t<2;t++)
    {
        for(i=0;i<3;i++)
        {
            for(j=0;j<5;j++)
            {
                printf("Enter %d table %d row %d column element : ",(t+1),i,j);
                scanf("%d",&arr[t][i][j]);
            }
        }
    }

    for(t=0;t<2;t++)
    {
        printf("\n%d Table Array Elements :\n",(t+1));
        for(i=0;i<3;i++)
        {
            for(j=0;j<5;j++)
            {
                printf("%d ",arr[t][i][j]);
            }
            printf("\n");
        }
    }

    return 0;
}

Output:

Enter 1 table 0 row 0 column element : 25
Enter 1 table 0 row 1 column element : 45
Enter 1 table 0 row 2 column element : 36
Enter 1 table 0 row 3 column element : 52
Enter 1 table 0 row 4 column element : 75
Enter 1 table 1 row 0 column element : 25
Enter 1 table 1 row 1 column element : 45
Enter 1 table 1 row 2 column element : 95
Enter 1 table 1 row 3 column element : 33
Enter 1 table 1 row 4 column element : 55
Enter 1 table 2 row 0 column element : 45
Enter 1 table 2 row 1 column element : 25
Enter 1 table 2 row 2 column element : 85
Enter 1 table 2 row 3 column element : 45
Enter 1 table 2 row 4 column element : 75
Enter 2 table 0 row 0 column element : 44
Enter 2 table 0 row 1 column element : 12
Enter 2 table 0 row 2 column element : 23
Enter 2 table 0 row 3 column element : 36
Enter 2 table 0 row 4 column element : 65
Enter 2 table 1 row 0 column element : 54
Enter 2 table 1 row 1 column element : 45
Enter 2 table 1 row 2 column element : 95
Enter 2 table 1 row 3 column element : 75
Enter 2 table 1 row 4 column element : 52
Enter 2 table 2 row 0 column element : 45
Enter 2 table 2 row 1 column element : 25
Enter 2 table 2 row 2 column element : 65
Enter 2 table 2 row 3 column element : 85
Enter 2 table 2 row 4 column element : 25

1 Table Array Elements :
25 45 36 52 75
25 45 95 33 55
45 25 85 45 75

2 Table Array Elements :
44 12 23 36 65
54 45 95 75 52
45 25 65 85 25

Explanation:

ऊपर program में हमने variable t का use table index के लिए किया है, variable i का use table row के index के तौर पर किया है और variable j का use table column के index के तौर पर किया है.

What’s Next: इस tutorial में हमने Multidimensional Array के बारे में पढ़ा. Next tutorial में हम C programming में Functions का use करना सीखेंगे.