본문 바로가기
C언어

[C언어] 두 행렬을 입력받아 덧셈과 뺄셈 연산의 결과를 출력하세요 행렬의 덧셈과 뺄셈의 연산이 불가능한 경우, "계산 오류"를 출력하세요.

by 이얏호이야호 2020. 5. 21.

행렬의 덧셈, 뺄셈을 진행하는 프로그램을 가지고 왔습니다.

물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을때

혼자풀어보기 -> 힌트 -> 코드보기 순으로 공부하시는게 실력 향상에 큰 도움이 됩니다!

힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고

답안을 확인해보세요

 

더보기

조건 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

 

댓글