समस्या
रन-टाइम कंपाइलेशन का उपयोग करके सरणी में सभी एलिमेंट्स का योग और गुणनफल गणना करें।
समाधान
टू-डायमेंशनल सरणी का उपयोग उन स्थितियों में किया जाता है जहां मानों की तालिका संग्रहीत करनी हो (या मैट्रिक्स एप्लिकेशन्स में)।
सिंटैक्स
datatype array_name[row_size][column_size];
उदाहरण: int a[5][5];
सरणी में एलिमेंट्स की संख्या = row_size * column_size = 5*5 = 25
उदाहरण प्रोग्राम
दो 2D सरणियों के एलिमेंट-वाइज योग और गुणनफल गणना करने का C प्रोग्राम:
#include <stdio.h>
void main() {
// रन टाइम पर सरणी घोषित करना
int A[2][3], B[2][3], i, j;
int sum[2][3], product[2][3];
// फोर लूप का उपयोग करके सरणी A और B में एलिमेंट्स पढ़ना
printf("Enter elements into array A:\n");
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
printf("A[%d][%d]: ", i, j);
scanf("%d", &A[i][j]);
}
printf("\n");
}
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
printf("B[%d][%d]: ", i, j);
scanf("%d", &B[i][j]);
}
printf("\n");
}
// योग गणना और आउटपुट प्रिंट करना
printf("Sum array:\n");
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
sum[i][j] = A[i][j] + B[i][j];
printf("%d\t", sum[i][j]);
}
printf("\n");
}
// गुणनफल गणना और आउटपुट प्रिंट करना
printf("Product array:\n");
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
product[i][j] = A[i][j] * B[i][j];
printf("%d\t", product[i][j]);
}
printf("\n");
}
}
आउटपुट
Enter elements into array A: A[0][0]: 12 A[0][1]: 23 A[0][2]: 3 A[1][0]: 25 A[1][1]: 34 A[1][2]: 1 B[0][0]: 3 B[0][1]: 46 B[0][2]: 23 B[1][0]: 1 B[1][1]: 24 B[1][2]: 32 Sum array: 15 69 26 26 58 33 Product array: 36 1058 69 25 816 32
व्याख्या
- दो 2x3 सरणियाँ
AऔरBरनटाइम पर भरी जाती हैं। - एलिमेंट-वाइज योग:
sum[i][j] = A[i][j] + B[i][j] - एलिमेंट-वाइज गुणनफल:
product[i][j] = A[i][j] * B[i][j] - यह मैट्रिक्स जोड़ और गुणन (हैडमर्ड प्रोडक्ट) है, मैट्रिक्स गुणन नहीं।
मैट्रिक्स गुणन (सही)
यदि वास्तविक मैट्रिक्स गुणन चाहिए (A × B जहां A: m×n, B: n×p):
// A: 2x3, B: 3x2 -> Result: 2x2
for(i = 0; i < 2; i++) {
for(j = 0; j < 2; j++) {
result[i][j] = 0;
for(k = 0; k < 3; k++) {
result[i][j] += A[i][k] * B[k][j];
}
}
}
मुख्य बिंदु
- 2D सरणी इनपुट के लिए नेस्टेड लूप्स।
- एलिमेंट-वाइज ऑपरेशन्स के लिए संगत आयाम आवश्यक।
- मैट्रिक्स गुणन के लिए आंतरिक आयाम मेल खाना चाहिए (A के कॉलम = B के रो)।
- बड़े मैट्रिक्स के लिए डायनामिक आवंटन और BLAS लाइब्रेरी उपयोग करें।