행렬의 덧셈, 뺄셈을 진행하는 프로그램을 가지고 왔습니다.
물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을때
혼자풀어보기 -> 힌트 -> 코드보기 순으로 공부하시는게 실력 향상에 큰 도움이 됩니다!
힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고
답안을 확인해보세요
조건 1
행렬의 덧셈, 뺄셈은 행과열의 수가 같을 때 가능하므로 연산이 불가능한 경우 "계산오류"를 출력
조건2
계산오류가 아닌 경우 연산을 진행하고 결과를 출력할것.
행과 열이 같다면 계산을 실행할 수 있어 결과값을 냅니다.
입력예시1
3 3
2 3 4
2 3 4
2 3 4
3 3
4 5 6
4 5 6
4 5 6
결과 예시1
A + B(두 행렬의 덧셈)
6 8 10
6 8 10
6 8 10
A - B(두 행렬의 뺄셈)
- 2 - 2 - 2
- 2 - 2 - 2
- 2 - 2 - 2
입력 행과 열의 수가 다르다면 계산을 할 수 없습니다.
입력 예시2
3 3
2 3 4
2 3 4
2 3 4
3 4
4 5 6 5
4 5 6 5
4 5 6 5
결과 예시2
계산오류
#include<stdio.h>
int main() {
int input1, input2, input3, input4, temp;
printf("행렬 A의 행, 열의 수를 입력하세요 >>"); //A의 행, 열의 수를 입력
scanf("%d %d", & input1, & input2);
int A[input1][input2];
int plus[input1][input2];
int minus[input1][input2];
printf("행렬 A의 값을 입력하세요\n");
for (int i = 0; i < input1; i++) { //A행렬의 값 입력
for (int j = 0; j < input2; j++) {
scanf("%d", & temp);
A[i][j] = temp;
}
}
printf("행렬 B의 행, 열의 수를 입력하세요 >>"); //B의 행, 열의 수를 입력
scanf("%d %d", & input3, & input4);
int B[input3][input4];
printf("행렬 B의 값을 입력하세요\n");
for (int i = 0; i < input3; i++) { //B행렬의 값 입력
for (int j = 0; j < input4; j++) {
scanf("%d", & temp);
B[i][j] = temp;
}
}
if ( ) { //계산을 할수 없는 경우 계산오류를 출력하고
printf("계산오류");
} else { //계산을 할 수 있는 경우 덧셈, 뺄셈을 진행한다.
for ( //이중포문 사용 덧셈, 뺄셈을 진행한다 ) {
for ( //이중포문 사용 덧셈, 뺄셈을 진행한다 ) {
plus[i][j] = //덧셈 ;
minus[i][j] = //뺄셈 ;
}
}
printf("A + B (두 행렬의 덧셈)\n"); //덧셈 출력
for (//이중포문사용 덧셈 출력) {
for (//이중포문사용 덧셈 출력) {
//plus[i][j];출력
}
printf("\n");
}
printf("A - B (두 행렬의 뺄셈)\n"); //뺄셈 출력
for (//이중포문사용 뺄셈 출력) {
for (//이중포문사용 뺄셈 출력) {
//minus[i][j];출력
}
printf("\n");
}
}
}
행과 열이 같다면 계산을 실행할 수 있어 결과값을 냅니다.
입력예시1
3 3
2 3 4
2 3 4
2 3 4
3 3
4 5 6
4 5 6
4 5 6
결과 예시1
A + B(두 행렬의 덧셈)
6 8 10
6 8 10
6 8 10
A - B(두 행렬의 뺄셈)
- 2 - 2 - 2
- 2 - 2 - 2
- 2 - 2 - 2
입력 행과 열의 수가 다르다면 계산을 할 수 없습니다.
입력 예시2
3 3
2 3 4
2 3 4
2 3 4
3 4
4 5 6 5
4 5 6 5
4 5 6 5
결과 예시2
계산오류
#include<stdio.h>
int main() {
int input1, input2, input3, input4, temp;
printf("행렬 A의 행, 열의 수를 입력하세요 >>"); //A의 행, 열의 수를 입력
scanf("%d %d", & input1, & input2);
int A[input1][input2];
int plus[input1][input2];
int minus[input1][input2];
printf("행렬 A의 값을 입력하세요\n"); //A행렬의 값 입력
for (int i = 0; i < input1; i++) {
for (int j = 0; j < input2; j++) {
scanf("%d", & temp);
A[i][j] = temp;
}
}
printf("행렬 B의 행, 열의 수를 입력하세요 >>"); //B의 행, 열의 수를 입력
scanf("%d %d", & input3, & input4);
int B[input3][input4];
printf("행렬 B의 값을 입력하세요\n"); //B행렬의 값 입력
for (int i = 0; i < input3; i++) {
for (int j = 0; j < input4; j++) {
scanf("%d", & temp);
B[i][j] = temp;
}
}
if (input1 != input3 || input2 != input4) { //행렬이 맞지 않아 계산할 수 없는 경우 계산오류 출력
printf("계산오류");
} else {
for (int i = 0; i < input1; i++) { //이중포문 사용 덧셈,뺄셈을 진행
for (int j = 0; j < input2; j++) {
plus[i][j] = A[i][j] + B[i][j];
minus[i][j] = A[i][j] - B[i][j];
}
}
printf("A + B (두 행렬의 덧셈)\n"); //덧셈출력
for (int i = 0; i < input1; i++) {
for (int j = 0; j < input2; j++) {
printf("%d ", plus[i][j]);
}
printf("\n");
}
printf("A - B (두 행렬의 뺄셈)\n"); //뻴셈출력
for (int i = 0; i < input1; i++) {
for (int j = 0; j < input2; j++) {
printf("%d ", minus[i][j]);
}
printf("\n");
}
}
}
더 많은 C언어 글이 궁금하다면?
https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4
'C언어' 카테고리의 다른 글
[C언어] 거꾸로 출력해 보아요 (0) | 2022.03.15 |
---|---|
[C언어] (Hangman) 정답이 되는 3글자의 영단어를 입력한 후 엔터키를 누릅니다. 정답을 맞추기 위하여 한 글자씩 입력한 후 엔터키를 누른다. 5번시도. (0) | 2020.05.23 |
[C언어] 사용자로부터 최대 3개의 메뉴를 입력 받은 메뉴와 가격 총금액을 출력하시오 (0) | 2020.05.18 |
[C언어] 3개의 정수 a,b,c를 받아서 c가 a,b의 사칙연산에 의한 값이면 연산기호를 출력한다. (0) | 2020.05.18 |
[C언어]문자 1개와 숫자 1개를 입력할 경우, 문자를 입력한 숫자만큼 증가시키는 프로그램을 작성하라. (0) | 2020.05.18 |
댓글