티스토리 뷰

숫자를 문자로 바꾸는 알고리즘 소스



숫자를 문자로 바꾸는 알고리즘 소스입니다.

예를 들면 123을 입력하면 일백이십삼이 나오는 것이지요.

지식인에 어떤 분이 올리신 글에 답변 다신 분의 소스를 올려봅니다. 출처가 정확히 생각이 안나서 올리신 분께는 양해의 말씀을 드립니다.



#include <stdio.h>
#include <string.h>
void main(void)
{
    char* unit[] = { "십", "백", "천" };
    char* big[] = { "만", "억", "조", "경", "해", "서", "양", "구", "간", "정", "재", "극", "항하사", "아승기", "나유타", "불가사의" };
    char* number[] = { "일", "이", "삼", "사", "오", "육", "칠", "팔", "구" };
    char str[64];

    int u, b, length, i;
    int cnt = 0;

    scanf("%s", str);
    length = strlen(str);
    b = (length - 1) / 4 - 1;
    u = (length % 4 == 0) ? 2 : length % 4 - 2;
    for(i = 0; i < length; i++)
    {
           if(str[i] != '0')
           {
                  printf("%s", number[str[i] - '0' - 1]);
                  cnt++;
           }
           if(u < 0 && length > 0)
           {
                  if((cnt || i == 0) && b >= 0)
                  {
                         printf("%s", big[b]);
                  }
                  b--;
                  cnt = 0;
                  u = 2;
           }
           else
           {
                  if(str[i] != '0')
                  {
                         printf("%s", unit[u]);

                  }
                  u--;
           }
    }
    puts("");
}



아래 보이는 화면은 실행화면입니다.




댓글