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

C언어로 입력받은 숫자를 해시(#) 기호로 크게 출력하는 프로그램

문자열 형태로 주어진 숫자 n이 있을 때, 이 숫자를 해시(#) 기호를 이용해 큰 크기로 출력하는 것이 이번 문제의 목표입니다.

예를 들어 "1234"라는 숫자가 주어졌다면, 다음과 같은 형태로 표현되어야 합니다.

C언어로 입력받은 숫자를 해시(#) 기호로 크게 출력하는 프로그램

마찬가지로 우리가 작성할 솔루션도 위와 같은 방식으로 결과를 출력하도록 구현합니다.

예시

입력: n[] = {"2234"}
출력:

C언어로 입력받은 숫자를 해시(#) 기호로 크게 출력하는 프로그램

입력: n[] = {"987"}
출력:

C언어로 입력받은 숫자를 해시(#) 기호로 크게 출력하는 프로그램

문제 해결 접근 방법

  • 최대 자릿수의 숫자를 문자열 형태로 입력받습니다.
  • 각 숫자(0~9)마다 원하는 큰 패턴을 2차원 배열로 하나씩 정의합니다.
  • 문자열을 순회하면서 각 숫자에 해당하는 패턴을 한 줄씩 출력합니다.

알고리즘

Start
    Step 1 -> Define Height as 7
    Step 2 -> Define W 8
    Step 3 -> In function int large(char num[])
       Declare variables i, j, k
       Set char zero[H][W]={" ##### ", // H=0
          " # # ",
          " # # ",
          " # # ",
          " # # ",
          " # # ",
          " ##### "},
       Set one[H][W]={" # ",
          " # ",
          " # ",
          " # ",
          " # ",
          " # ",
          " # "},
       Set two[H][W]={ " ##### ",
          " # ",
          " # ",
          " ##### ",
          " # ",
          " # ",
          " ##### "},
       Set three[H][W]={" ##### ",
          " # ",
          " # ",
          " ##### ",
          " # ",
          " # ",
          " ##### "},
       Set four[H][W]={" # ",
          " # # ",
          " # # ",
          " ##### ",
          " # ",
          " # ",
          " # "},
       Set five[H][W]={" ##### ",
          " # ",
          " # ",
          " ##### ",
          " # ",
          " # ",
          " ##### "},
       Set six[H][W]={ " ##### ",
          " # ",
          " # ",
          " ##### ",
          " # # ",
          " # # ",
          " ##### "},
       Set seven[H][W]={" ##### ",
          " # ",
          " # ",
          " # ",
          " # ",
          " # ",
          " # "},
       Set eight[H][W]={" ##### ",
          " # # ",
          " # # ",
          " ##### ",
          " # # ",
          " # # ",
          " ##### "},
       Set nine[H][W]={" ##### ",
          " # # ",
          " # # ",
          " ##### ",
          " # ",
          " # ",
          " # "}
       If strlen(num) > 10
          Print ”You must enter a number upto 10 digits”
       Else
          Print new line
          Set k=1
          Set j=0
          While k <= 7
             Loop For i=0 and i Declare int main()
       Declare and initialize input char n[] = {"2168"}
       Call function large(n)
Stop

구현 예제

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define H 7
#define W 8
int large(char num[]) {
   int i, j, k;
   // declaring char 2D arrays and initializing
   // with hash-printed digits
   char zero[H][W]={" ##### ", // H=0
      " # # ", // H=1
      " # # ", // H=2
      " # # ", // H=3
      " # # ", // H=4
      " # # ", // H=5
      " ##### "},// H=6
   one[H][W]={" # ",
      " # ",
      " # ",
      " # ",
      " # ",
      " # ",
      " # "},
   two[H][W]={ " ##### ",
      " # ",
      " # ",
      " ##### ",
      " # ",
      " # ",
      " ##### "},
   three[H][W]={" ##### ",
      " # ",
      " # ",
      " ##### ",
      " # ",
      " # ",
      " ##### "},
   four[H][W]={" # ",
      " # # ",
      " # # ",
      " ##### ",
      " # ",
      " # ",
      " # "},
   five[H][W]={" ##### ",
      " # ",
      " # ",
      " ##### ",
      " # ",
      " # ",
      " ##### "},
   six[H][W]={ " ##### ",
      " # ",
      " # ",
      " ##### ",
      " # # ",
      " # # ",
      " ##### "},
   seven[H][W]={" ##### ",
      " # ",
      " # ",
      " # ",
      " # ",
      " # ",
      " # "},
   eight[H][W]={" ##### ",
      " # # ",
      " # # ",
      " ##### ",
      " # # ",
      " # # ",
      " ##### "},
   nine[H][W]={" ##### ",
      " # # ",
      " # # ",
      " ##### ",
      " # ",
      " # ",
      " # ";
   if (strlen(num) > 10)
      printf("\nYou must enter a number upto 10 digits.\nTry again!\n");
   else {
      printf("\n");
      k=1;
      j=0; //controls H of each digit
      while (k <= 7) //controls height {
         for (i=0; i<strlen(num); i++) //reads each digit {
            if (num[i] == '0')
               printf("%s", zero[j]);
            else if (num[i] == '1')
               printf("%s", one[j]);
            else if (num[i] == '2')
               printf("%s", two[j]);
            else if (num[i] == '3')
               printf("%s", three[j]);
            else if (num[i] == '4')
               printf("%s", four[j]);
            else if (num[i] == '5')
               printf("%s", five[j]);
            else if (num[i] == '6')
               printf("%s", six[j]);
            else if (num[i] == '7')
               printf("%s", seven[j]);
            else if (num[i] == '8')
               printf("%s", eight[j]);
            else if (num[i] == '9')
               printf("%s", nine[j]);
         }
         printf("\n");
         k++;
         j++;
      }
   }
   return 1;
}
//main fucntion
int main() {
   char n[] = {"2168"};
   large(n);
   return 0;
}

실행 결과

C언어로 입력받은 숫자를 해시(#) 기호로 크게 출력하는 프로그램

코드 설명

위 코드의 핵심 로직은 다음과 같습니다.

  • 패턴 정의: 0부터 9까지 각 숫자를 높이 7칸, 너비 8칸 크기의 2차원 문자 배열로 정의합니다. 각 행은 해당 숫자의 가로 한 줄을 나타냅니다.
  • 높이 반복: while 루프(k 변수)는 숫자의 세로 높이인 7줄을 제어하고, for 루프(i 변수)는 입력받은 문자열의 각 자릿수를 차례대로 읽습니다.
  • 조건 분기: 현재 자릿수가 어떤 숫자인지 비교하여, 그 숫자 패턴 배열의 j번째 행을 공백 없이 이어서 출력함으로써 여러 숫자가 나란히 배치된 형태를 완성합니다.
  • 예외 처리: 입력이 10자리를 초과하면 오류 메시지를 출력하고 종료합니다.

이 프로그램은 전광판이나 콘솔 기반 시각화 등에서 활용할 수 있는 기본적인 ASCII 아트 출력 기법을 보여주는 좋은 예제입니다.