티스토리 뷰

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



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

예를 들면 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("");
}



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




댓글
  • 프로필사진 ㅎㅎ cnt++ 위치 변경 필요할 듯 합니다.
    첫 번째 if 문 안으로...
    1 0001 0001 같은 경우 안나옵니다.
    2017.10.26 22:36
  • 프로필사진 하늘과 나 앗 버그가 있었군요.
    감사합니다.
    cnt++ 위치 수정했습니다.
    2017.11.04 00:19 신고
  • 프로필사진 생각의화사함 이 소스 링크걸어 감니다. 감사합니다. 2017.11.20 07:42
  • 프로필사진 알 수 없는 사용자
    문자로 처리 하셨군요.

    but(버뜨) 1조만 넘어가더라도,
    integer로 변환하는 순간 "윽~!!! 나죽어요" 할 것인데,
    연산이 안 되는 숫자가, 그 의미가 있을까 싶기도 하네요.

    문자 변환 알고리즘 잘 보고 갑니다. ‘따봉’입니다.
    2018.11.10 06:13
댓글쓰기 폼
공지사항
Total
3,560,922
Today
110
Yesterday
320
«   2021/12   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함