การเขียนโปรแกรมบวกเมทริกซ์ ในภาษา C

12 December 2022

ในบทเรียนนี้ คุณจะได้เรียนรู้การเขียนโปรแกรมเพื่อบวกเมทริกซ์ซึ่งเป็นหนึ่งในการดำเนินการพื้นฐานของเมทริกซ์ในภาษา C นี่เป็นเนื้อหาในบทนี้

  • โปรแกรมบวกเมทริกซ์
  • การรับค่าเมทริกซ์จากคีย์บอร์ด

โปรแกรมบวกเมทริกซ์

การบวกเมทริกซ์ (Matrix addition) คือการนำสองเมทริกซ์ที่จำนวนแถวและหลักมาบวกกันเพื่อให้ได้รับเมทริกซ์ใหม่ ในภาษา C เราสามารถเขียนโปรแกรมเพื่อบวกเมทริกซ์ได้โดยการเก็บค่าของเมทริกซ์ในอาเรย์สองมิติ นี่เป็นตัวอย่างของโปรแกรมอย่างง่ายสำหรับบวกสองเมทริกซ์ในภาษา C

matrix_addition.c
#include <stdio.h>

int main()
{
    // Predefined matrices to use
    int a[3][3] = {{-5, 4, -2}, {7, 8, 9}, {-1, 7, 9}};
    int b[3][3] = {{9, 0, 3}, {-2, -7, 0}, {4, 3, -6}};

    // Matrix to keep the result
    int c[3][3];

    // Add matrix a and b and store result in c
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            c[i][j] = a[i][j] + b[i][j];
        }
    }

    // Print the result of c
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }

    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

4 4 1
5 1 9
3 10 3

ในตัวอย่างนี้ เราได้เขียนโปรแกรมสำหรับบวกสองเมทริกซ์เข้าด้วยกัน จากนั้นแสดงผลลัพธ์ของเมทริกซ์ที่ได้จากการบวกออกทางหน้าจอ ต่อไปเป็นการอธิบายการทำงานของโปรแกรมในแต่ส่วนว่ามันมีการทำงานอย่างไรบ้าง

int a[3][3] = {{-5, 4, -2}, {7, 8, 9}, {-1, 7, 9}};
int b[3][3] = {{9, 0, 3}, {-2, -7, 0}, {4, 3, -6}};

ในตอนต้นของโปรแกรม เราได้ประกาศสองตัวแปรอาเรย์ a และ b ที่มีขนาดเป็น 3*3 สำหรับเก็บค่าของสองเมทริกซ์ที่มีจำนวน 3 แถวและ 3 หลัก โดยเราจะกำหนดค่าของเมทริกซ์ตายตัวเอาไว้เลยเพื่อให้ตัวอย่างเรียบง่าย

int c[3][3];

จากนั้นเราประกาศตัวแปรอาเรย์ c ที่มีขนาดเป็นขนาดเป็น 3*3 ที่จะถูกใช้สำหรับเก็บผลลัพธ์ของการบวกของเมทริกซ์หรือจากอาเรย์ทั้งสองก่อนหน้า

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        c[i][j] = a[i][j] + b[i][j];
    }
}

ในส่วนต่อมาเป็นส่วนของการบวกเมทริกซ์เข้าด้วยกัน เราได้ใช้คำสั่งวนซ้ำ for loop วนสร้าง Index ของอาเรย์สองมิติเพื่ออ่านค่าในอาเรย์ โดยลูปรอบนอกใช้สร้างแถวของอาเรย์ และลูปรอบในใช้สร้างหลักของอาเรย์ จากนั้นทำการบวกแต่ละค่าของ a และ b และเก็บค่าในไว้ในอาเรย์ c

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

สุดท้ายเป็นการแสดงค่าของอาเรย์ c หรือเมทริกซ์ผลลัพธ์ออกทางหน้าจอ โดยใช้คำสั่ง for loop วนอ่านค่าในอาเรย์เช่นเดิม

การรับค่าเมทริกซ์จากคีย์บอร์ด

ในตัวอย่างที่ผ่านมา เราได้กำหนดจำนวนแถวและหลักของเมทริกซ์ในโปรแกรม ซึ่งในความเป็นจริงแล้วเมทริกซ์สามารถมีขนาดใดก็ได้ ในตัวอย่างนี้ เราจะมาเขียนโปรแกรมเพื่อให้สามารถป้อนจำนวนแถวและหลักและค่าของเมทริกซ์จากทางคีย์บอร์ดเพื่อนำมาคำนวณได้ นี่เป็นตัวอย่างของโปรแกรม

matrix_addition_v2.c
#include <stdio.h>
#define MAX_ROW 100
#define MAX_COL 100

void print_matrix(int matrix[MAX_ROW][MAX_COL], int row, int col)
{
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int main()
{
    int row, col;
    int a[MAX_ROW][MAX_COL], b[MAX_ROW][MAX_COL], c[MAX_ROW][MAX_COL];

    printf("Enter matrix row: ");
    scanf("%d", &row);
    printf("Enter matrix col: ");
    scanf("%d", &col);

    // Getting values for matrix a
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("Enter a[%d][%d]: ", i, j);
            scanf("%d", &a[i][j]);
        }
    }

    // Getting values for matrix b
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("Enter b[%d][%d]: ", i, j);
            scanf("%d", &b[i][j]);
        }
    }

    // Adding matrices and store to c
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            c[i][j] = a[i][j] + b[i][j];
        }
    }

    printf("Matrix a\n");
    print_matrix(a, row, col);

    printf("Matrix b\n");
    print_matrix(b, row, col);

    printf("Matrix c\n");
    print_matrix(c, row, col);

    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Enter matrix row: 3
Enter matrix col: 3
Enter a[0][0]: 1
Enter a[0][1]: 2
Enter a[0][2]: 3
Enter a[1][0]: 4
Enter a[1][1]: 5
Enter a[1][2]: 6
Enter a[2][0]: 7
Enter a[2][1]: 8
Enter a[2][2]: 9
Enter b[0][0]: 1
Enter b[0][1]: 2
Enter b[0][2]: 3
Enter b[1][0]: 4
Enter b[1][1]: 5
Enter b[1][2]: 6
Enter b[2][0]: 7
Enter b[2][1]: 8
Enter b[2][2]: 9
Matrix a
1 2 3
4 5 6
7 8 9
Matrix b
1 2 3
4 5 6
7 8 9
Matrix c
2 4 6
8 10 12
14 16 18

ในตัวอย่างนี้ เป็นโปรแกรมสำหรับบวกเมทริกซ์ที่มีการรับค่ามาจากทางคีย์บอร์ดและแสดงผลของการบวกออกทางหน้าจอ ต่อไปมาดูการทำงานของโปรแกรมทีละขั้นตอนกันว่ามันทำงานอย่างไรบ้าง

#define MAX_ROW 100
#define MAX_COL 100

ในตอนต้นของโปรแกรม เราได้ประกาศค่าคงที่ด้วยคำสั่ง #define ที่เป็นขนาดสูงสุดของเมทริกซ์ที่โปรแกรมจะรองรับ เราทำเช่นนี้เพื่อให้มันเรียบง่ายและเราไม่ต้องการใช้หน่วยความจำแบบไดนามิกส์ในการสร้างอาเรย์

int row, col;
int a[MAX_ROW][MAX_COL], b[MAX_ROW][MAX_COL], c[MAX_ROW][MAX_COL];

ในฟังก์ชัน main เราได้ประกาศตัวแปรที่จะต้องใช้ในโปรแกรม ตัวแปร row และ col ใช้สำหรับเก็บขนาดของเมทริกซ์ และตัวแปรอาเรย์สองมิติ a, b และ c ใช้สำหรับเก็บค่าของเมทริกซ์ที่จะรับเข้ามาจากทางคีย์บอร์ดและจากการคำนวณ ตามลำดับ

printf("Enter matrix row: ");
scanf("%d", &row);
printf("Enter matrix col: ");
scanf("%d", &col);

ถัดมาเป็นการรับค่าจำนวนแถวและหลักของเมทริกซ์เก็บไว้ในตัวแปร row และ col โดยการแสดงคำแนะนำเล็กน้อยก่อนการรับค่า

for (int i = 0; i < row; i++) {
    for (int j = 0; j < col; j++) {
        printf("Enter a[%d][%d]: ", i, j);
        scanf("%d", &a[i][j]);
    }
}

จากนั้นเป็นการรับค่าสำหรับเมทริกซ์แรกและเก็บไว้ในตัวแปรอาเรย์ a ในตัวอย่างนี้การวนของคำสั่ง for loop จะใช้ค่าจากตัวแปร row และ col ซึ่งเป็นขนาดของเมทริกซ์ที่ได้รับค่ามาไว้แล้วก่อนหน้า สำหรับการรับค่าของเมทริกซ์ที่สองก็ทำเช่นกัน แต่เราเก็บไว้ในอาเรย์ b แทน

for (int i = 0; i < row; i++) {
    for (int j = 0; j < col; j++) {
        c[i][j] = a[i][j] + b[i][j];
    }
}

เช่นเดียวกับในตัวอย่างก่อนหน้า เราใช้คำสั่งวนซ้ำ for loop วนอ่านค่าในตัวแปรอาเรย์ a และ b จากนั้นนำค่าในแต่ละตำแหน่งมาบวกกันและเก็บผลลัพธ์ไว้ในตัวแปรอาเรย์ c

printf("Matrix a\n");
print_matrix(a, row, col);

printf("Matrix b\n");
print_matrix(b, row, col);

printf("Matrix c\n");
print_matrix(c, row, col);

สุดท้ายเป็นการเรียกใช้ฟังก์ชัน print_matrix เพื่อแสดงค่าของเมทริกซ์ทั้งสามออกทางหน้าจอ

ในบทเรียนนีิ้ คุณได้เรียนรู้เกี่ยวกับการเขียนโปรแกรมเพื่อบวกเมทริกซ์ในภาษา C การบวกเมทริกซ์เป็นการดำเนินการพื้นฐานในเมทริกซ์ที่เรียบง่ายและสามารถเขียนโปรแกรมเพื่อแก้ปัญหาได้

บทความนี้เป็นประโยชน์หรือไม่?Yes·No