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

15 December 2022

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

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

การเขียนโปรแกรมลบเมทริกซ์

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

matrix_subtraction.c
#include <stdio.h>

int main()
{
    int a[3][3] = {{2, 4, 3}, {6, 8, 7}, {10, 7, 1}};
    int b[3][3] = {{5, 8, 6}, {5, 9, 8}, {2, 1, 10}};
    int c[3][3];

    // Subtract matrices
    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
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", c[i][j]);
        }
        printf("\n");
    }

    return 0;
}

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

-3 -4 -3
1 -1 -1
8 6 -9

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

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

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

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 เพื่อวนค่าในอาเรย์ 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_subtraction2.c
#include <stdio.h>
#define MAX_SIZE 100

void print_matrix(int matrix[MAX_SIZE][MAX_SIZE], 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 a[MAX_SIZE][MAX_SIZE];
    int b[MAX_SIZE][MAX_SIZE];
    int c[MAX_SIZE][MAX_SIZE];
    int row, col;

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

    // Get 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]);
        }
    }

    // Get 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]);
        }
    }

    // Subtract 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;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเรากรอกขนาดของเมทริกซ์ที่ต้องนำมาลบกันเป็น 3x2

Enter matrix row: 2
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 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
Matrix a
1 2 3
4 5 6
Matrix b
1 2 3
4 5 6
Matrix c
0 0 0
0 0 0

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

#define MAX_SIZE 100

ในส่วนเริ่มต้นของโปรแกรม เรากำหนดค่าคงที่ซึ่งเป็นขนาดสูงสุดของเมทริกซ์ที่โปรแกรมจะรองรับนั่นคือ 100x100

int a[MAX_SIZE][MAX_SIZE];
int b[MAX_SIZE][MAX_SIZE];
int c[MAX_SIZE][MAX_SIZE];
int row, col;

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

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

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

// Get 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]);
    }
}

// Get 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]);
    }
}

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

// Subtract 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];
    }
}

หลังจากที่ได้รับค่าของเมทริกซ์นำเข้าทั้งสองแล้ว เราใช้คำสั่ง 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