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