C Program for Matrix Addition using Arrays and Functions

Classified in Computers

Written on in English with a size of 3.8 KB

This document presents two methods for implementing matrix addition in C: a monolithic approach within the main function and a modular approach utilizing separate functions for input, calculation, and display. Both examples handle 2D arrays up to 100x100 dimensions.

Method 1: Monolithic Implementation in main()

This initial approach places all logic—input handling, calculation, and output—directly within the main function. The code below has been corrected for proper C syntax, including loop conditions and scanf format specifiers.

Corrected C Code Snippet 1

#include <stdio.h>
#include <stdlib.h>

void main(void) {
    float a[100][100], b[100][100], c[100][100];
    int rows, columns, i, j;

    printf("Enter number of rows: ");
    scanf("%d", &rows);
    printf("Enter number of columns: ");
    scanf("%d", &columns);

    printf("\n--- Enter Matrix 1 ---\n");
    // Input Matrix 1
    for (i = 0; i < rows; i++) {
        for (j = 0; j < columns; j++) {
            printf("Value [%d][%d]: ", i + 1, j + 1);
            scanf("%f", &a[i][j]);
        }
    }

    printf("\n--- Enter Matrix 2 ---\n");
    // Input Matrix 2
    for (i = 0; i < rows; i++) {
        for (j = 0; j < columns; j++) {
            printf("Value [%d][%d]: ", i + 1, j + 1);
            scanf("%f", &b[i][j]);
        }
    }

    printf("\n--- The Sum Matrix ---\n");
    // Calculate and Display Sum
    for (i = 0; i < rows; i++) {
        for (j = 0; j < columns; j++) {
            c[i][j] = a[i][j] + b[i][j];
            printf("%6.2f ", c[i][j]);
        }
        printf("\n");
    }

    system("PAUSE");
}

Method 2: Modular Implementation using Functions

This method demonstrates better programming practice by separating tasks into reusable functions. This improves code clarity and maintainability.

Function Prototypes and main() Structure

The main function handles dimension input and calls the specialized functions.

#include <stdio.h>
#include <stdlib.h>

// Function Prototypes
void LeerMatriz(float matrix[][100], int f, int c);
void MostrarMatriz(float matrix[][100], int f, int c);
void SumarMatrices(float array1[][100], float array2[][100], float arr3[][100], int f, int c);

void main(void) {
    float a[100][100], b[100][100], c[100][100];
    int rows, columns;

    printf("Enter number of rows: ");
    scanf("%d", &rows);
    printf("Enter number of columns: ");
    scanf("%d", &columns);

    printf("\n--- Enter Matrix 1 ---\n");
    LeerMatriz(a, rows, columns);

    printf("\n--- Enter Matrix 2 ---\n");
    LeerMatriz(b, rows, columns);

    SumarMatrices(a, b, c, rows, columns);

    printf("\n--- The Sum Matrix ---\n");
    MostrarMatriz(c, rows, columns);

    system("PAUSE");
}

Function Definitions

Reading Matrix Values (LeerMatriz)
void LeerMatriz(float matrix[][100], int f, int c) {
    int i, j;
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++) {
            printf("Value [%d][%d]: ", i + 1, j + 1);
            scanf("%f", &matrix[i][j]);
        }
    }
}
Displaying the Result (MostrarMatriz)
void MostrarMatriz(float matrix[][100], int f, int c) {
    int i, j;
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++) {
            printf("%6.2f ", matrix[i][j]);
        }
        printf("\n");
    }
}
Calculating the Sum (SumarMatrices)
void SumarMatrices(float array1[][100], float array2[][100], float arr3[][100], int f, int c) {
    int i, j;
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++) {
            arr3[i][j] = array1[i][j] + array2[i][j];
        }
    }
}

Related entries: