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