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

C언어로 3x3 2차원 배열의 하단 삼각형 요소만 출력하는 방법

이 글에서는 프로그램 실행 중 키보드로 3x3 행렬, 즉 총 9개의 요소를 2차원 배열에 입력받는 방법을 알아봅니다.

입력받은 배열과 for 반복문을 활용하면 3x3 행렬에서 하단 삼각형(lower triangle) 요소만 골라서 출력할 수 있습니다.

하단 삼각형 출력 로직

하단 삼각형이란 행렬에서 대각선을 기준으로 왼쪽 아래에 위치한 요소들을 의미합니다. 핵심 조건은 바로 인덱스 비교입니다. 첫 번째 인덱스(행)가 두 번째 인덱스(열)보다 크거나 같으면(1st index >= 2nd index) 하단 삼각형 영역에 해당하므로 값을 출력하고, 그렇지 않은 자리에는 공백을 출력합니다.

for(i=0;i<3;i++){
   for(j=0;j<3;j++){
      if(i>=j) // 하단 삼각형 조건: 행 인덱스 >= 열 인덱스
         printf("%d",array[i][j]);
      else
         printf(" "); // 하단 삼각형이 아닌 자리는 공백 출력
   }
   printf("\n");
}

전체 프로그램

다음은 3x3 2차원 배열에서 하단 삼각형 요소만 출력하는 C 프로그램 전체 코드입니다.

#include<stdio.h>
int main(){
   int array[3][3],i,j;
   printf("enter 9 numbers:");
   for(i=0;i<3;i++){
      for(j=0;j<3;j++)
         scanf("%d",&array[i][j]);
   }
   for(i=0;i<3;i++){
      for(j=0;j<3;j++){
         if(i>=j) // 하단 삼각형 조건: 행 인덱스 >= 열 인덱스
            printf("%d",array[i][j]);
         else
            printf(" "); // 하단 삼각형이 아닌 자리는 공백 출력
      }
      printf("\n");
   }
   return 0;
}

실행 결과

프로그램을 실행하면 아래와 같은 결과를 확인할 수 있습니다.

enter 9 numbers:
1 2 3
1 3 4
4 5 6
1
13
456

출력 결과를 보면 각 행마다 조건을 만족하는 요소만 남습니다. 첫 번째 행에서는 [0][0] 위치의 1만 출력되고, 두 번째 행에서는 1과 3이 이어져 "13"으로, 세 번째 행에서는 4, 5, 6이 모두 출력됩니다. 숫자 사이에 공백을 넣고 싶다면 printf 서식 문자열에 공백을 추가하면 됩니다.

응용: 상단 삼각형 출력하기

같은 원리를 응용하면 주어진 3x3 행렬에서 상단 삼각형(upper triangle) 요소만 출력하는 프로그램도 쉽게 작성할 수 있습니다. 조건식만 i >= j에서 i <= j로 바꾸면 됩니다.

예제 코드

#include<stdio.h>
int main(){
   int array[3][3],i,j;
   printf("enter 9 numbers:");
   for(i=0;i<3;i++){
      for(j=0;j<3;j++)
         scanf("%d",&array[i][j]);
   }
   for(i=0;i<3;i++){
      for(j=0;j<3;j++){
         if(i<=j) // 상단 삼각형 조건: 행 인덱스 <= 열 인덱스
            printf("%d",array[i][j]);
         else
            printf(" "); // 상단 삼각형이 아닌 자리는 공백 출력
      }
      printf("\n");
   }
   return 0;
}

실행 결과

상단 삼각형 프로그램의 실행 결과는 다음과 같습니다.

enter 9 numbers:
2 3 4
8 9 6
1 2 3
2 3 4
  9 6
    3

첫 번째 행의 세 요소가 모두 출력되고, 두 번째 행에서는 대각선부터 오른쪽 요소인 9와 6이, 세 번째 행에서는 마지막 요소인 3만 출력되는 것을 확인할 수 있습니다.