Operations on Two-Dimensional arrays (addition, subtraction, multiplication, transpose, search, merge string)

हर 2D-array operation एक अलग body पहने nested loops है: addition और subtraction cell-दर-cell copy करते हैं, transpose indexes को swap करता है (b[j][i] = a[i][j]), search grid को scan करता है, और multiplication row-into-column के लिए एक तीसरा loop जोड़ता है।

12 min read · 11 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

जो गणित आप पहले ही पास कर चुके

BCA102 में आपने matrices जोड़ीं, transpose कीं, यहाँ तक कि गुणा कीं, कागज़ पर, marks के लिए।

आज वही operations C syntax पहने लौटते हैं, और यह रहा मुक्त करने वाला राज़: हर 2D operation बस एक अलग one-line body वाले nested loops है।

Addition? Nested loops, body जोड़ती है। Transpose? Nested loops, body indexes flip करती है। Multiplication? एक extra loop। अगर आप for (i...) for (j...) लिख सकते हैं, तो आप ये सब लिख सकते हैं।

Theory

वही tour, अलग काम

Nested loop को एक tour route समझिए जो grid के हर cell को visit करता है, row-दर-row, seat-दर-seat। Route कभी नहीं बदलता; सिर्फ हर seat पर काम बदलता है। Addition: "जुड़वाँ cells जोड़ो, नतीजा यहाँ रखो"। Transpose: "इस cell को उसकी आईने वाली seat पर copy करो"। Search: "क्या यह वही value है जो हम चाहते हैं?"। एक route, कई काम, वह मानसिक model पाँच exam programs को एक में समेट देता है।

Theory

Addition, subtraction, transpose, search

एक ही order वाले grids a और b के लिए (BCA102 का नियम बचता है: जोड़ने के लिए एक ही order):

c[i][j] = a[i][j] + b[i][j]; /* addition */

c[i][j] = a[i][j] - b[i][j]; /* subtraction */

Transpose (rows columns बन जाती हैं, m×n, n×m बन जाता है):

b[j][i] = a[i][j]; /* indexes swap roles */

एक value के लिए Search: हर cell का tour कीजिए, और match पर दोनों coordinates बताइए:

if (a[i][j] == target) printf("at row %d col %d", i, j);

Practical

दो test grids जोड़ना (2 students × 3 subjects)

#include <stdio.h>

int main() {
    int t1[2][3] = {{70, 80, 90}, {60, 75, 85}};
    int t2[2][3] = {{75, 82, 88}, {65, 70, 90}};
    int total[2][3];
    int i, j;

    for (i = 0; i < 2; i++)
        for (j = 0; j < 3; j++)
            total[i][j] = t1[i][j] + t2[i][j];

    for (i = 0; i < 2; i++) {
        for (j = 0; j < 3; j++) printf("%d ", total[i][j]);
        printf("\n");
    }
    return 0;
}

This example runs in Gri-Learn on the web, where you can edit it and see the output.

Theory

Multiplication: तीसरा loop

BCA102 ने आपको सिखाया: c का cell (i, j) = a की row i, b की column j में, जोड़ियाँ गुणा करो, उन्हें जोड़ो। "उन्हें जोड़ो" खुद एक loop है, इसलिए multiplication को तीन चाहिए:

for (i = 0; i < m; i++)

for (j = 0; j < p; j++) {

c[i][j] = 0; /* start the sum */

for (k = 0; k < n; k++)

c[i][j] += a[i][k] * b[k][j];

}

नया counter k साझा (inner) dimension पर चलता है: a की row i के साथ और साथ-साथ b की column j के नीचे। जोड़ने से पहले c[i][j] = 0 भूलना क्लासिक bug है।

Think first

Transpose को trace कीजिए

a, 2×3 है rows {1, 2, 3} और {4, 5, 6} के साथ। हर cell पर b[j][i] = a[i][j] लगाइए। b क्या है, और इसका order क्या है?

Show the answer

b 3×2 है:

1 4

2 5

3 6

a की row 0 (1, 2, 3) खड़ी होकर b की COLUMN 0 बन गई। Index swap b[j][i] = a[i][j] सारा काम करता है; loops सिर्फ tour करते हैं। अगर आपका b, 2×3 निकला, तो आपने उसे पुराने order से declare किया, transpose declaration को भी flip करता है।

Quiz

multiplication code में, तीसरा counter k असल में किसके साथ चलता है?

  1. साझा inner dimension: a की row i के साथ और b की column j के नीचे, दोनों साथ
  2. result matrix c की rows
  3. result matrix c की columns
  4. दोनों matrices के सारे elements बेतरतीब
Show the answer

साझा inner dimension: a की row i के साथ और b की column j के नीचे, दोनों साथ

एक result cell के लिए, k, a[i][k] को b[k][j] के साथ जोड़ी बनाता है: a की row i का k-वाँ element, b की column j के k-वें element के साथ, गुणा और जमा। यही ठीक BCA102 का row-into-column है, मशीनीकृत। i और j चुनते हैं कौन सा cell; k उसे COMPUTE करता है। हर loop का काम नाम देना ठीक वैसे है जैसे examiners इसे phrase करते हैं।

Quiz

दो char arrays में "Ri" और "ya" हैं। इन्हें एक array में "Riya" रखने के लिए merge करने को, program पहली string copy करता है, फिर...

  1. दूसरी string को पहली के '\0' position पर लिखना शुरू करता है, और नतीजे को terminate करता है
  2. दूसरी string को पहले array के आख़िरी box के बाद लिखता है
  3. दोनों strings के ASCII codes जोड़ता है
  4. + operator इस्तेमाल करता है: "Ri" + "ya"
Show the answer

दूसरी string को पहली के '\0' position पर लिखना शुरू करता है, और नतीजे को terminate करता है

Merge (concatenation) का मतलब है पहली string के terminator को दूसरी string के पहले letter से overwrite करना, आगे copy करना, फिर एक ताज़ा '\0' से बंद करना। C में strings के लिए कोई + नहीं है (option D बकवास में compile होता है); इस loop का ready-made version strcat है, Unit 4 में आ रहा। '\0' का हिसाब ही पूरा खेल है।

Watch out

Marks कहाँ कटते हैं

k-loop से पहले c[i][j] = 0 भूलना: garbage आपके योग में शामिल हो जाता है। Order के नियम BCA102 से आते हैं: addition को एक जैसे orders चाहिए; multiplication को a की columns = b की rows चाहिए, exam जवाबों में यह जाँच बताइए। Transpose गलत declare करना: एक m×n, n×m array में transpose होता है। और merge में, आख़िरी '\0' छोड़ना एक ऐसी string छोड़ता है जो कभी खत्म नहीं होती, printf %s खुशी-खुशी साबित कर देगा।

Theory

unit का दूसरा आधा इंतज़ार कर रहा है

अब आप grids पर हुक्म चलाते हैं: बनाना, tour, जोड़ना, flip, search, गुणा। जो आप अभी नहीं जानते वह यह है कि array का नाम असल में है क्या, और scanf को एक के लिए कभी & क्यों नहीं चाहिए था। जवाब, addresses, C का सबसे डरावना और सबसे interview में पूछा जाने वाला topic खोलता है: pointers। अगला lesson इसे एक तस्वीर से निष्क्रिय कर देता है।

Summary

Key takeaways

  • सारे 2D operations अलग bodies वाले nested loops हैं (tour और काम)।
  • Addition/subtraction: एक ही order वाले grids पर cell-दर-cell: c[i][j] = a[i][j] ± b[i][j]।
  • Transpose: b[j][i] = a[i][j]; m×n, n×m बन जाता है।
  • Multiplication: तीन loops; k साझा dimension पर चलता है; पहले c[i][j] zero कीजिए।
  • Search दोनों coordinates बताता है; string merge '\0' को overwrite करके फिर terminate करता है।
  • याद रखने का hook: वही tour, अलग काम।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Concepts of Arrays and Pointer

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Operations on Two-Dimensional arrays (addition, subtraction, multiplication, transpose, search, merge string) · Computer Programming and Programming Methodology (CPPM) · Gri-Learn