समस्या
5×5 मैट्रिक्स के लिए रनटाइम पर इनपुट लेकर प्रत्येक पंक्ति (row) और स्तंभ (column) का योग निकालना।
एल्गोरिदम
- 5×5 मैट्रिक्स के तत्व इनपुट लें
- पंक्ति योग: प्रत्येक पंक्ति
iके लिए, सभीjपरsum += A[i][j] - स्तंभ योग: प्रत्येक स्तंभ
jके लिए, सभीiपरsum += A[i][j] - प्रत्येक योग प्रिंट करें
पूर्ण C प्रोग्राम (सुधारित)
#include <stdio.h>
#define SIZE 5
int main() {
int A[SIZE][SIZE];
int i, j;
// इनपुट
printf("%dx%d मैट्रिक्स के तत्व दर्ज करें:\n", SIZE, SIZE);
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
printf("A[%d][%d]: ", i, j);
scanf("%d", &A[i][j]);
}
}
// पंक्ति योग
printf("\n--- पंक्ति योग ---\n");
for (i = 0; i < SIZE; i++) {
int rowSum = 0; // प्रत्येक पंक्ति के लिए रीसेट
for (j = 0; j < SIZE; j++)
rowSum += A[i][j];
printf("पंक्ति %d: %d\n", i, rowSum);
}
// स्तंभ योग
printf("\n--- स्तंभ योग ---\n");
for (j = 0; j < SIZE; j++) {
int colSum = 0; // प्रत्येक स्तंभ के लिए रीसेट
for (i = 0; i < SIZE; i++)
colSum += A[i][j];
printf("स्तंभ %d: %d\n", j, colSum);
}
// बोनस: विकर्ण योग
int diag1 = 0, diag2 = 0;
for (i = 0; i < SIZE; i++) {
diag1 += A[i][i];
diag2 += A[i][SIZE-1-i];
}
printf("\nमुख्य विकर्ण योग: %d\n", diag1);
printf("द्वितीयक विकर्ण योग: %d\n", diag2);
return 0;
}
आउटपुट उदाहरण
5x5 मैट्रिक्स के तत्व दर्ज करें: A[0][0]: 1 A[0][1]: 2 A[0][2]: 3 A[0][3]: 4 A[0][4]: 5 A[1][0]: 6 A[1][1]: 7 A[1][2]: 8 A[1][3]: 9 A[1][4]: 10 A[2][0]: 11 A[2][1]: 12 A[2][2]: 13 A[2][3]: 14 A[2][4]: 15 A[3][0]: 16 A[3][1]: 17 A[3][2]: 18 A[3][3]: 19 A[3][4]: 20 A[4][0]: 21 A[4][1]: 22 A[4][2]: 23 A[4][3]: 24 A[4][4]: 25 --- पंक्ति योग --- पंक्ति 0: 15 पंक्ति 1: 40 पंक्ति 2: 65 पंक्ति 3: 90 पंक्ति 4: 115 --- स्तंभ योग --- स्तंभ 0: 55 स्तंभ 1: 60 स्तंभ 2: 65 स्तंभ 3: 70 स्तंभ 4: 75 मुख्य विकर्ण योग: 65 द्वितीयक विकर्ण योग: 65
मूल प्रोग्राम की बग्स (सुधार)
- काउंटर रीसेट नहीं:
rowऔरcolumnप्रत्येक पंक्ति/स्तंभ से पहले 0 नहीं किए गए थे → संचयी योग - गलत सूचकांक: स्तंभ प्रिंट में
iउपयोग किया गया थाjके बजाय - कोई मैक्रो/कॉन्स्ट नहीं: हार्डकोडेड 5
- कोई इनपुट सत्यापन नहीं
सामान्यीकृत संस्करण (कोई भी आकार)
int main() {
int rows, cols;
printf("पंक्तियाँ स्तंभ: ");
scanf("%d %d", &rows, &cols);
int **A = malloc(rows * sizeof(int*));
for (i = 0; i < rows; i++)
A[i] = malloc(cols * sizeof(int));
// ... इनपुट और योग समान लॉजिक ...
// मुक्ति
for (i = 0; i < rows; i++) free(A[i]);
free(A);
}
आवेदन
- छवि प्रसंस्करण: पंक्ति/स्तंभ योग से प्रोजेक्शन
- डेटा विश्लेषण: सीमांत योग (marginal sums)
- गेम: टिक-टैक-टो जीत जांच
- रैखिक बीजगणित: मैट्रिक्स ऑपरेशन्स की नींव