소개
이 실습에서는 C 프로그래밍으로 두 행렬을 더하는 방법을 배웁니다. 이 실습은 다음 단계를 포함합니다: 두 행렬의 차원과 요소를 읽는 것, 대응하는 요소를 더하는 것, 그리고 결과 행렬을 출력하는 것. 먼저 행렬 차원과 요소를 읽는 C 프로그램을 만들고, 그 다음 행렬 덧셈 논리를 구현하고, 마지막으로 최종 행렬을 출력합니다. 이 실습은 C 를 사용하여 행렬과 선형 대수 작업에 대한 실무 경험을 제공하는 것을 목표로 합니다.
이 실습에서는 C 프로그래밍으로 두 행렬을 더하는 방법을 배웁니다. 이 실습은 다음 단계를 포함합니다: 두 행렬의 차원과 요소를 읽는 것, 대응하는 요소를 더하는 것, 그리고 결과 행렬을 출력하는 것. 먼저 행렬 차원과 요소를 읽는 C 프로그램을 만들고, 그 다음 행렬 덧셈 논리를 구현하고, 마지막으로 최종 행렬을 출력합니다. 이 실습은 C 를 사용하여 행렬과 선형 대수 작업에 대한 실무 경험을 제공하는 것을 목표로 합니다.
이 단계에서는 C 프로그램에서 두 행렬의 차원과 요소를 읽는 방법을 배웁니다. 행렬 덧셈은 크기가 같은 행렬을 필요로 하므로, 먼저 행렬 차원과 요소에 대한 입력을 구현합니다.
먼저 행렬 덧셈을 위한 새로운 C 파일을 생성합니다.
cd ~/project
nano matrix_addition.c
이제 행렬 차원과 요소를 읽는 코드를 작성해 봅시다.
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE];
// 행렬 차원 읽기
printf("Enter number of rows (max %d): ", MAX_SIZE);
scanf("%d", &rows);
printf("Enter number of columns (max %d): ", MAX_SIZE);
scanf("%d", &cols);
// 첫 번째 행렬 요소 입력
printf("Enter elements of first matrix:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Enter element [%d][%d]: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 두 번째 행렬 요소 입력
printf("Enter elements of second matrix:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Enter element [%d][%d]: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
return 0;
}
프로그램을 컴파일합니다.
gcc matrix_addition.c -o matrix_addition
프로그램을 실행하면 행렬 차원과 요소를 입력하라는 메시지가 표시됩니다.
Enter number of rows (max 10): 2
Enter number of columns (max 10): 3
Enter elements of first matrix:
Enter element [0][0]: 1
Enter element [0][1]: 2
Enter element [0][2]: 3
Enter element [1][0]: 4
Enter element [1][1]: 5
Enter element [1][2]: 6
Enter elements of second matrix:
Enter element [0][0]: 7
Enter element [0][1]: 8
Enter element [0][2]: 9
Enter element [1][0]: 10
Enter element [1][1]: 11
Enter element [1][2]: 12
#define MAX_SIZE 10은 행렬 차원의 최대 제한을 설정합니다.scanf()는 정수 입력을 받아 행, 열 및 행렬 요소를 읽습니다.for 루프는 두 행렬의 요소를 입력하는 데 사용됩니다.이 단계에서는 두 행렬의 대응하는 요소를 더하고 결과를 새로운 행렬에 저장하는 방법을 배웁니다.
이전 C 파일을 엽니다.
cd ~/project
nano matrix_addition.c
행렬 요소를 더하도록 프로그램을 수정합니다.
#include <stdio.h>
#define MAX_SIZE 10
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// 이전 입력 코드는 동일하게 유지
// ... (matrix1 과 matrix2 의 차원 및 요소 입력)
// 대응하는 요소 더하기
printf("\nResulting Matrix (Matrix1 + Matrix2):\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
업데이트된 프로그램을 컴파일합니다.
gcc matrix_addition.c -o matrix_addition
프로그램을 실행합니다.
./matrix_addition
Enter number of rows (max 10): 2
Enter number of columns (max 10): 3
Enter elements of first matrix:
Enter element [0][0]: 1
Enter element [0][1]: 2
Enter element [0][2]: 3
Enter element [1][0]: 4
Enter element [1][1]: 5
Enter element [1][2]: 6
Enter elements of second matrix:
Enter element [0][0]: 7
Enter element [0][1]: 8
Enter element [0][2]: 9
Enter element [1][0]: 10
Enter element [1][1]: 11
Enter element [1][2]: 12
Resulting Matrix (Matrix1 + Matrix2):
8 10 12
14 16 18
result가 생성됩니다.for 루프는 두 행렬의 각 요소를 반복합니다.result[i][j] = matrix1[i][j] + matrix2[i][j]는 대응하는 요소를 더합니다.printf()는 결과 행렬을 표시하는 데 사용됩니다.이 단계에서는 깔끔하고 읽기 쉬운 방식으로 결과 행렬을 서식화하고 출력하는 방법을 배웁니다.
이전 C 파일을 엽니다.
cd ~/project
nano matrix_addition.c
전용 행렬 출력 함수를 사용하여 프로그램을 업데이트합니다.
#include <stdio.h>
#define MAX_SIZE 10
// 행렬 출력 함수
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int cols, const char* matrixName) {
printf("%s:\n", matrixName);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];
// 이전 입력 코드는 동일하게 유지
// ... (matrix1 과 matrix2 의 차원 및 요소 입력)
// 대응하는 요소 더하기
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] + matrix2[i][j];
}
}
// 행렬 출력
printMatrix(matrix1, rows, cols, "First Matrix");
printMatrix(matrix2, rows, cols, "Second Matrix");
printMatrix(result, rows, cols, "Resulting Matrix (Matrix1 + Matrix2)");
return 0;
}
업데이트된 프로그램을 컴파일합니다.
gcc matrix_addition.c -o matrix_addition
프로그램을 실행합니다.
./matrix_addition
Enter number of rows (max 10): 2
Enter number of columns (max 10): 3
Enter elements of first matrix:
Enter element [0][0]: 1
Enter element [0][1]: 2
Enter element [0][2]: 3
Enter element [1][0]: 4
Enter element [1][1]: 5
Enter element [1][2]: 6
Enter elements of second matrix:
Enter element [0][0]: 7
Enter element [0][1]: 8
Enter element [0][2]: 9
Enter element [1][0]: 10
Enter element [1][1]: 11
Enter element [1][2]: 12
First Matrix:
1 2 3
Second Matrix:
7 8 9
Resulting Matrix (Matrix1 + Matrix2):
8 10 12
printMatrix() 함수는 일관된 서식으로 행렬을 출력하도록 만들어졌습니다.%4d 서식 지정자는 정렬된 열 출력을 보장합니다.이 실험에서 C 프로그램에서 두 행렬의 차원과 요소를 읽는 방법을 배웠습니다. 이것은 행렬 덧셈에 필수적인 단계로, 같은 크기의 행렬이 필요하기 때문입니다. 행렬 차원과 요소에 대한 입력을 구현하여 프로그램이 최대 10x10 크기의 행렬을 처리할 수 있도록 했습니다.
행렬 차원과 요소를 읽은 후 다음 단계는 두 행렬의 대응하는 요소를 더하고 결과 행렬을 저장하는 것입니다.