Two Dimensional Array In C - सी में द्वि-आयामी ऐरे
- _Romeyo Boy_
- 9 दिस॰ 2021
- 4 मिनट पठन
अपडेट करने की तारीख: 16 दिस॰ 2021
हमने एक-आयामी ऐरे के बारे में चर्चा की है, एक-आयाम ऐरे का उपयोग डेटा आइटम की वैल्यूज को संग्रहीत करने के लिए किया जाता है लेकिन 'C' द्वि-आयामी ऐरे का उपयोग करने की भी अनुमति देता है।
2D ऐरे ( द्वि-आयामी ऐरे ) को मैट्रिक्स के रूप में व्यवस्थित किया जाता है, जिसे पंक्तियों (Rows) और स्तंभों (Column) के संग्रह के रूप में दर्शाया जा सकता है। हालाँकि, 2D ऐरे एक रिलेशनल डेटाबेस लुकलाइक डेटा संरचना को लागू करने के लिए बनाई गई हैं। यह बड़ी मात्रा में डेटा को एक साथ रखने में आसानी प्रदान करता है, जिसे आवश्यकता पड़ने पर किसी भी संख्या में फंक्शन्स में पारित किया जा सकता है।
What Is Two Dimensional Array?
इस प्रकार के ऐरे में Row और Column दोनों में डेटा को संग्रहीत किया जाता है, इसलिए इसे द्वि-आयामी ऐरे कहते हैं। इसमें डबल सबस्क्रिप्ट ( इंडेक्स ) का प्रयोग किया जाता है, इसलिए इसे डबल सब-स्क्रिप्टेड वेरिएबल भी कहते हैं।द्वि-आयामी ऐरे को गणित में मैट्रिक्स (Matrix) एवं सॉफ्टवेयर में टेबल (Table) कहते हैं।

Definition Of Two Dimensional Array (
"ऐसा ऐरे जिसमे दो सबस्क्रिप्ट (Subscript) को उपयोग में लाया जाता हैं, उसे द्वि-आयामी ऐरे (Two Dimensional Array) कहते है।"
Declaration Of Two-Dimensional Array
द्वि-आयामी ऐरे की घोषणा एक-आयामी ऐरे की घोषणा के समान है। यहाँ एक अलग से ब्रैकेट [ ] होता हैं, जो कि दूसरे इंडेक्स को दर्शाता हैं। दो-आयामी ऐरे को निम्नानुसार घोषित किया गया है;
Syntax;
data_type array_name[rows-wise][columns-wise];
For Example;
int items[4][3];
जहाँ int डेटा टाइप हैं तथा items ऐरे वेरिएबल का नाम हैं। ऐरे में 4 पंक्ति साइज (Rows) की संख्या है, और 3 कॉलम साइज (Column) की संख्या है।
Initialization Of Two-Dimensional Array ( द्वि-आयामी ऐरे का आरंभीकरण )
एक-आयामी ऐरे में, यदि घोषणा (Declaration) और आरंभीकरण (Initialization) एक साथ किया जा रहा है, तो हमें ऐरे के आकार को निर्दिष्ट करने की आवश्यकता नहीं है। हालाँकि, यह द्वि-आयामी ऐरे के साथ काम नहीं करेगा। हमें ऐरे के कम से कम दूसरे आयाम को परिभाषित करना होगा। द्वि-आयामी ऐरे को निम्नलिखित तरीके से घोषित और परिभाषित किया जा सकता है।
int items[4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
For Example; Two Dimensional Array In C Program
#include <stdio.h>
int main(){
int i=0,j=0;
int items[4][3]={{1,2,3},{2,3,4},{3,4,5},{4,5,6}};
//traversing 2D array
for(i=0;i<4;i++) {
for(j=0;j<3;j++)
{
printf("items[%d] [%d] = %d \n", i, j, items[i][j]);
} //end of j
} //end of i
return 0;
}
♻️Output Of This Program;
items[0][0] = 1
items[0][1] = 2
items[0][2] = 3
items[1][0] = 2
items[1][1] = 3
items[1][2] = 4
items[2][0] = 3
items[2][1] = 4
items[2][2] = 5
items[3][0] = 4
items[3][1] = 5
items[3][2] = 6
Accessing Two-Dimensional Array Elements ( द्वि-आयामी सरणी तत्वों तक पहुंचना )
द्वि-आयामी ऐरे में एक तत्व को सबस्क्रिप्ट यानी पंक्ति (Row) इंडेक्स और सरणी के कॉलम इंडेक्स का उपयोग करके एक्सेस किया जाता है।
For Example:
int val = a[2][3];
उपरोक्त स्टेटमेंट ऐरे की तीसरी पंक्ति से चौथा तत्व लेगा। आप इसे ऊपर दिए गए चित्र में सत्यापित कर सकते हैं। आइए हम निम्नलिखित प्रोग्राम की जाँच करें जहाँ हमने द्वि-आयामी ऐरे को संभालने के लिए नेस्टेड लूप का उपयोग किया है;
#include <stdio.h>
int main () {
/* an array with 5 rows and 2 columns*/
int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
int i, j;
/* output each array element's value */
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 2; j++ ) {
printf("a[%d][%d] = %d\n", i,j, a[i][j] );
}
}
return 0;
}
♻ This Program Output Is:
जब उपरोक्त कोड संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है;
a[0][0] = 0
a[0][1] = 0
a[1][0] = 1
a[1][1] = 2
a[2][0] = 2
a[2][1] = 4
a[3][0] = 3
a[3][1] = 6
a[4][0] = 4
a[4][1] = 8
जैसा कि ऊपर बताया गया है, आपके पास किसी भी आयाम के साथ ऐरे हो सकती हैं, हालाँकि यह संभावना है कि आपके द्वारा बनाए गए अधिकांश ऐरे एक या दो आयामों की होंगी।
Representation Of Two Dimensional Array In memory ( मेमोरी में द्वि-आयामी ऐरे का प्रतिनिधित्व )
द्वि-आयामी ऐरे के एलिमेंट्स को एक मैट्रिक्स के रूप में प्रदर्शित किया जा सकता है, लेकिन इसके एलिमेंट भी एलिमेंट्स में किसी एक-आयामी ऐरे (1D ऐरे) के एलिमेंट्स की तरह एक लाइन या अनुक्रम (Sequence) में ही संग्रहीत होते हैं। इनके मेमोरी में संग्रहीत होने का तरीका प्रोग्रामिंग लैंग्वेज पर निर्भर करता है। प्रोग्रामिंग लैंग्वेज इसे मेमोरी में दो प्रकार से Row Wise अथवा Column Wise संग्रहीत किया जा सकता है।
किसी द्वि-आयामी ऐरे को मेमोरी में Row Wise संग्रहीत किया जाता है, तो इसे Row-Major-Order एवं Column Wise संग्रहीत किया जाता है तो इसे Column-Major-Order कहते हैं।
For Example;
माना A एक द्वि-आयामी ऐरे है जिसमें 3×4 एलिमेंट्स संग्रहीत है, जिनका पहला सबस्क्रिप्ट/इंडेक्स [ i ] क्रमशः 1,2,3 व दूसरा सबस्क्रिप्ट/इंडेक्स [ j ] क्रमशः 1,2,3,4 तथा वर्ड लेंथ (w) 1 बाइट है। तब इसे सामान्य रूप से A[3,4] से एवं मेमोरी में निम्नलिखित दो प्रकार से Row-Major-Order या Column-Major-Order में प्रदर्शित किया जा सकता है;

जहाँ,
A ऐरे वेरिएबल का नाम है।
1,2,3 पंक्ति या रोव की सबस्क्रिप्ट/इंडेक्स हैं (LB=1, UB=3)
1,2,3,4 कॉलम की सबस्क्रिप्ट/इंडेक्स हैं (LB=1, UB=4)
1001............1012 मेमोरी लोकेशन के मेमोरी एड्रेस हैं।
10.............120 एलिमेंट्स हैं।
पहले एलिमेंट A[1,1] का एड्रेस जो कि 1001 है, ऐरे का आधार एड्रेस (BA - Base Address) कहलाता है।
Calculation Of Total Element In Two Dimensional Array ( द्वि-आयामी ऐरे में कुल तत्व की गणना )
यदि हमें किसी द्वि-आयामी ऐरे के Row एवं Column के लोअर बाउंड (LB) तथा अप्पर बाउंड (UB) ज्ञात है तो इसमें एलिमेंट्स की कुल संख्या निम्नलिखित सूत्र से ज्ञात किया जा सकता है-
(UBr-LBr+1)*(UBc-LBc+1)
ऊपर दिए गए ऐरे में Row का लोअर बाउंड 1 और अप्पर बाउंड 3 है। इसी प्रकार Column का लोअर बाउंड 1 और अप्पर बाउंड 4 है। अतः टोटल एलिमेंट्स = (3+1-1)*(4+1-1) = 12
댓글