Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++에서 중괄호 없이 2차원 행렬 줄바꿈하여 출력하기

C/C++ 프로그래밍 언어에서 중괄호({})를 사용하지 않고 2차원 행렬을 출력하는 코드를 살펴보겠습니다.

중괄호는 프로그래밍 언어에서 구분자 역할을 하는 기호로, 프로그램 내에서 독립적인 코드 블록을 정의하는 데 사용됩니다. C/C++에서는 중괄호 없이 스코프(범위)를 정의하기 어렵기 때문에, 이번에 소개할 기법은 꽤 흥미로운 주제입니다.

먼저 2차원 행렬을 출력하는 기본 코드와 실행 결과부터 확인해 보겠습니다.

기본 예제

#include <iostream>
using namespace std;
int main() {
    int arr[2][2] = {{12, 67},
    {99, 5}};
    int n = 2, m = 2;
    for (int i = 0; i < m; i++){
        for (int j = 0; j < n; j++){
            cout<<arr[i][j]<<" ";
        }
        cout << endl;
    }
    return 0;
}

출력 결과

12 67
99 5

그렇다면 같은 결과를 중괄호 없이 출력하려면 어떻게 해야 할까요? 각 반복 단계에서 마지막 열이 아닐 때는 공백을, 마지막 열일 때는 줄바꿈을 출력해야 합니다. 이를 위해 다음과 같은 축약 표현을 사용할 수 있습니다.

" \n"[j==n-1]

이 표현식의 동작 원리는 다음과 같습니다. 문자열 리터럴 " \n"은 공백 문자와 줄바꿈 문자, 두 개의 문자로 이루어진 배열입니다. 인덱스 자리에 있는 조건식 j==n-1이 참이면 값이 1이 되어 '\n' 문자에 접근하고, 거짓이면 값이 0이 되어 공백 문자 ' '에 접근합니다. 즉, 조건에 따라 공백 또는 줄바꿈을 선택적으로 출력하는 것입니다.

예를 들어 2×2 행렬을 이 방식으로 출력하면, 첫 번째 요소 뒤에는 공백이 출력되고 두 번째(마지막) 요소 뒤에는 줄바꿈이 발생합니다.

다음은 이 기법을 실제로 구현한 프로그램입니다.

구현 예제

#include<iostream>
using namespace std;
int main() {
    int mat[][3] = {
        {31, 7, 57},
        {42, 1, 99},
        {12, 9, 56}
    };
    int n=3, m=3;
    cout<<"The matrix is : \n";
    for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
        cout<<mat[i][j]<<" \n"[j==n-1];
    return 0;
}

출력 결과

The matrix is :
31 7 57
42 1 99
12 9 56