समस्या
रन-टाइम आरंभीकरण का उपयोग करके टू-डायमेंशनल सरणी के सभी एलिमेंट्स का योग गणना करें।
समाधान
टू-डायमेंशनल सरणी का उपयोग उन स्थितियों में किया जाता है जहां मानों की तालिका संग्रहीत करनी हो (या मैट्रिक्स एप्लिकेशन्स में)।
सिंटैक्स
datatype array_name[row_size][column_size];
उदाहरण: int a[4][4];
सरणी में एलिमेंट्स की संख्या = row_size * column_size = 4*4 = 16
उदाहरण प्रोग्राम
रन-टाइम आरंभीकरण का उपयोग करके 2D सरणी के सम और विषम एलिमेंट्स का योग गणना करने का C प्रोग्राम:
#include <stdio.h>
void main() {
// सरणी और वेरिएबल्स घोषित करना
int A[4][3], i, j, even = 0, odd = 0;
// सरणी में एलिमेंट्स पढ़ना
printf("Enter elements into array A:\n");
for(i = 0; i < 4; i++) {
for(j = 0; j < 3; j++) {
printf("A[%d][%d]: ", i, j);
scanf("%d", &A[i][j]);
}
}
// फोर लूप का उपयोग करके सरणी में सम और विषम एलिमेंट्स का योग गणना करना
for(i = 0; i < 4; i++) {
for(j = 0; j < 3; j++) {
if(A[i][j] % 2 == 0) {
even = even + A[i][j];
} else {
odd = odd + A[i][j];
}
}
}
printf("Sum of even elements in array A: %d\n", even);
printf("Sum of odd elements in array A: %d\n", odd);
}
आउटपुट
Enter elements into array A: A[0][0]: 1 A[0][1]: 2 A[0][2]: 3 A[1][0]: 4 A[1][1]: 10 A[1][2]: 20 A[2][0]: 30 A[2][1]: 40 A[2][2]: 22 A[3][0]: 33 A[3][1]: 44 A[3][2]: 55 Sum of even elements in array A: 172 Sum of odd elements in array A: 92
व्याख्या
- सरणी
A[4][3]में 4 पंक्तियाँ और 3 कॉलम हैं (कुल 12 एलिमेंट्स)। - नेस्टेड लूप्स का उपयोग करके प्रत्येक एलिमेंट पढ़ा जाता है।
% 2 == 0से सम/विषम चेक किया जाता है।- दो अलग-अलग काउंटर्स (
even,odd) योग संचित करते हैं।
सभी एलिमेंट्स का कुल योग (सरल संस्करण)
#include <stdio.h>
int main() {
int rows, cols;
printf("Enter rows and columns: ");
scanf("%d %d", &rows, &cols);
int arr[rows][cols]; // VLA (C99)
int sum = 0;
printf("Enter %d elements:\n", rows * cols);
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
scanf("%d", &arr[i][j]);
sum += arr[i][j];
}
}
printf("Total sum of all elements: %d\n", sum);
return 0;
}
मुख्य बिंदु
- 2D सरणी में नेस्टेड लूप्स का उपयोग करके ट्रैवर्स करें।
- रो-मेजर ऑर्डर: पहले रो इंडेक्स, फिर कॉलम इंडेक्स।
- VLA (Variable Length Arrays) C99 में समर्थित, C11 में वैकल्पिक।
- बड़ी सरणियों के लिए डायनामिक आवंटन (
malloc) बेहतर है।