소개
이 실습에서는 C 프로그램에서 두 행렬을 빼는 방법을 배우게 됩니다. 이 실습은 다음 단계를 포함합니다.
먼저, 사용자 입력으로 두 행렬의 차원과 요소를 읽는 방법을 배웁니다. C 프로그램을 작성하여 사용자에게 행과 열의 개수를 입력하도록 요청하고, 그런 다음 두 행렬의 요소를 입력하도록 합니다.
다음으로, 두 행렬의 대응하는 요소를 빼서 결과를 새 행렬에 저장하는 행렬 뺄셈 연산을 구현합니다. 마지막으로, 결과 행렬을 출력하는 방법을 배웁니다.
차원 및 요소 읽기
이 단계에서는 행렬 뺄셈을 위한 C 프로그램에서 사용자 입력으로 행렬 차원과 요소를 읽는 방법을 배웁니다. 사용자가 두 행렬의 크기와 값을 입력할 수 있도록 프로그램을 만들 것입니다.
먼저, 행렬 뺄셈 프로그램을 위한 새로운 C 파일을 만들어 봅시다.
cd ~/project
nano matrix_subtraction.c
이제 다음 코드를 파일에 추가합니다.
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
// 행렬 차원 읽기
printf("행의 개수를 입력하세요: ");
scanf("%d", &rows);
printf("열의 개수를 입력하세요: ");
scanf("%d", &cols);
// 첫 번째 행렬의 요소 입력
printf("첫 번째 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("요소 [%d][%d] 를 입력하세요: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 두 번째 행렬의 요소 입력
printf("두 번째 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("요소 [%d][%d] 를 입력하세요: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
return 0;
}
예시 출력:
행의 개수를 입력하세요: 2
열의 개수를 입력하세요: 2
첫 번째 행렬의 요소를 입력하세요:
요소 [0][0]를 입력하세요: 5
요소 [0][1]를 입력하세요: 6
요소 [1][0]를 입력하세요: 7
요소 [1][1]를 입력하세요: 8
두 번째 행렬의 요소를 입력하세요:
요소 [0][0]를 입력하세요: 1
요소 [0][1]를 입력하세요: 2
요소 [1][0]를 입력하세요: 3
요소 [1][1]를 입력하세요: 4
프로그램을 컴파일하고 실행해 봅시다.
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
코드 설명:
MAX_SIZE를 사용하여 최대 행렬 크기를 100x100 으로 정의합니다.rows와cols는 행렬의 차원을 저장합니다.- 두 개의 2 차원 배열
matrix1과matrix2는 행렬 요소를 저장하기 위해 생성됩니다. scanf()는 사용자 입력으로부터 행렬 차원과 요소를 읽는 데 사용됩니다.- 중첩된 반복문은 두 행렬의 요소를 입력하는 데 사용됩니다.
대응하는 요소 빼기
이 단계에서는 두 행렬의 대응하는 요소를 빼서 결과를 새 행렬에 저장하는 방법을 배웁니다. 이전 프로그램을 확장하여 행렬 뺄셈을 수행할 것입니다.
기존 파일을 열고 코드를 수정합니다.
cd ~/project
nano matrix_subtraction.c
행렬 뺄셈 논리를 코드에 추가합니다.
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// 행렬 차원 읽기
printf("행의 개수를 입력하세요: ");
scanf("%d", &rows);
printf("열의 개수를 입력하세요: ");
scanf("%d", &cols);
// 첫 번째 행렬의 요소 입력
printf("첫 번째 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("요소 [%d][%d] 를 입력하세요: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 두 번째 행렬의 요소 입력
printf("두 번째 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("요소 [%d][%d] 를 입력하세요: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// 대응하는 요소 빼기
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
return 0;
}
예시 출력:
행의 개수를 입력하세요: 2
열의 개수를 입력하세요: 2
첫 번째 행렬의 요소를 입력하세요:
요소 [0][0]를 입력하세요: 5
요소 [0][1]를 입력하세요: 6
요소 [1][0]를 입력하세요: 7
요소 [1][1]를 입력하세요: 8
두 번째 행렬의 요소를 입력하세요:
요소 [0][0]를 입력하세요: 1
요소 [0][1]를 입력하세요: 2
요소 [1][0]를 입력하세요: 3
요소 [1][1]를 입력하세요: 4
코드 설명:
- 뺄셈 결과를 저장하기 위한 새로운 2 차원 배열
result가 생성됩니다. - 중첩된 반복문은 각 행렬 요소를 반복합니다.
result[i][j]는matrix1과matrix2의 대응하는 요소를 빼서 계산합니다.- 뺄셈은 요소별 행렬 뺄셈 규칙을 따릅니다.
프로그램을 컴파일합니다.
gcc matrix_subtraction.c -o matrix_subtraction
결과 행렬 출력
이 단계에서는 뺄셈 후 결과 행렬을 출력하는 방법을 배웁니다. 이전 프로그램을 수정하여 뺄셈 결과를 표시할 것입니다.
기존 파일을 열고 코드를 업데이트합니다.
cd ~/project
nano matrix_subtraction.c
행렬 출력 논리를 코드에 추가합니다.
#include <stdio.h>
#define MAX_SIZE 100
int main() {
int rows, cols;
int matrix1[MAX_SIZE][MAX_SIZE];
int matrix2[MAX_SIZE][MAX_SIZE];
int result[MAX_SIZE][MAX_SIZE];
// 행렬 차원 읽기
printf("행의 개수를 입력하세요: ");
scanf("%d", &rows);
printf("열의 개수를 입력하세요: ");
scanf("%d", &cols);
// 첫 번째 행렬의 요소 입력
printf("첫 번째 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("요소 [%d][%d] 를 입력하세요: ", i, j);
scanf("%d", &matrix1[i][j]);
}
}
// 두 번째 행렬의 요소 입력
printf("두 번째 행렬의 요소를 입력하세요:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("요소 [%d][%d] 를 입력하세요: ", i, j);
scanf("%d", &matrix2[i][j]);
}
}
// 대응하는 요소 빼기
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
result[i][j] = matrix1[i][j] - matrix2[i][j];
}
}
// 결과 행렬 출력
printf("\n뺄셈 후 결과 행렬:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
프로그램을 컴파일하고 실행합니다.
gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction
예시 출력:
행의 개수를 입력하세요: 2
열의 개수를 입력하세요: 2
첫 번째 행렬의 요소를 입력하세요:
요소 [0][0]를 입력하세요: 5
요소 [0][1]를 입력하세요: 6
요소 [1][0]를 입력하세요: 7
요소 [1][1]를 입력하세요: 8
두 번째 행렬의 요소를 입력하세요:
요소 [0][0]를 입력하세요: 1
요소 [0][1]를 입력하세요: 2
요소 [1][0]를 입력하세요: 3
요소 [1][1]를 입력하세요: 4
뺄셈 후 결과 행렬:
4 4
4 4
코드 설명:
result행렬을 출력하기 위한 새로운 중첩 루프가 추가되었습니다.printf("%d ", result[i][j])는 각 요소를 출력합니다.- 각 행 뒤에 새로운 줄을 생성하기 위해 추가적인
printf("\n")가 있습니다. - 출력은 뺄셈된 값을 가진 행렬을 보여줍니다.
요약
이 실험에서는 C 프로그램에서 사용자 입력으로 행렬 차원과 요소를 읽어 행렬 뺄셈을 수행하는 방법을 배웠습니다. 이 프로그램은 사용자가 두 행렬의 크기와 값을 입력하도록 하며, 이 값들은 두 개의 2 차원 배열에 저장됩니다. 이 단계는 두 행렬의 대응하는 요소를 빼고 결과 행렬을 출력하는 후속 단계의 기반을 마련합니다.
프로그램은 사용자에게 행과 열의 개수를 입력하도록 요청하고, 그런 다음 첫 번째 및 두 번째 행렬의 요소 입력을 안내합니다. 이를 통해 프로그램이 서로 다른 크기의 행렬을 적절하게 처리하고 추가 처리를 위해 입력 데이터를 저장할 수 있도록 합니다.



