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

C#으로 숫자를 영어 단어로 변환하는 프로그램 만들기

C#으로 숫자를 영어 단어로 변환하는 프로그램 만들기

이번 글에서는 C#을 사용하여 정수를 각 자릿수별 영어 단어로 변환하는 프로그램을 만들어 보겠습니다. 예를 들어 4677이라는 숫자를 입력하면 four six seven seven처럼 출력되는 방식입니다.

1단계: 0부터 9까지의 단어 배열 선언

가장 먼저 각 자릿수(0~9)에 해당하는 영어 단어를 문자열 배열로 선언합니다. 이 배열은 나중에 추출한 자릿수를 인덱스로 사용해 해당 단어를 찾는 역할을 합니다.

// 0부터 9까지 각 자릿수에 해당하는 단어
string[] digits_words = { "zero", "one", "two",
   "three", "four", "five",
   "six", "seven", "eight",
   "nine"
};

2단계: 변환할 숫자 설정

단어로 변환할 숫자를 변수에 저장하고 콘솔에 출력합니다.

// 단어로 변환할 숫자
val = 4677;
Console.WriteLine("Number: " + val);

3단계: 루프로 각 자릿수 추출하기

do-while 루프와 나머지 연산자(%), 나눗셈 연산자(/)를 활용하면 숫자의 자릿수를 하나씩 분리할 수 있습니다. val % 10은 마지막 자릿수를 반환하고, val / 10은 마지막 자릿수를 제거한 값을 남깁니다. 이 과정을 반복하면 각 자릿수가 배열에 저장됩니다.

do {
   next = val % 10;
   a[num_digits] = next;
   num_digits++;
   val = val / 10;
} while(val > 0);

자릿수는 뒤에서부터 추출되므로, 마지막에는 배열을 역순으로 순회하며 원래 순서대로 단어를 출력해야 합니다.

전체 예제 코드

아래는 위의 내용을 모두 합친 완성된 C# 코드입니다. 직접 실행해 보면서 동작을 확인해 보세요.

using System;
using System.Collections.Generic;
using System.Text;
namespace Demo {
   class MyApplication {
      static void Main(string[] args) {
         int val, next, num_digits;
         int[] a = new int[10];
         // 0부터 9까지 각 자릿수에 해당하는 단어
         string[] digits_words = {
            "zero",
            "one",
            "two",
            "three",
            "four",
            "five",
            "six",
            "seven",
            "eight",
            "nine"
         };
         // 단어로 변환할 숫자
         val = 4677;
         Console.WriteLine("Number: " + val);
         Console.Write("Number (words): ");
         next = 0;
         num_digits = 0;
         do {
            next = val % 10;
            a[num_digits] = next;
            num_digits++;
            val = val / 10;
         } while (val > 0);
         num_digits--;
         for (; num_digits >= 0; num_digits--)
         Console.Write(digits_words[a[num_digits]] + " ");
         Console.ReadLine();
      }
   }
}

실행 결과

Number: 4677
Number (words): four six seven seven

코드 동작 원리 정리

이 프로그램의 핵심 로직은 다음과 같습니다.

1. 자릿수 분리: do-while 루프 안에서 val % 10으로 일의 자리 숫자를 얻고, val / 10으로 그 자릿수를 제거합니다. 값이 0이 될 때까지 반복합니다.

2. 배열 저장: 추출된 자릿수는 a[] 배열에 차례대로 저장됩니다. 이때 순서는 실제 숫자의 역순입니다.

3. 역순 출력: num_digits를 하나 감소시킨 후 for 루프로 배열을 뒤에서 앞으로 순회하며, 저장된 자릿수를 인덱스로 digits_words 배열에서 단어를 찾아 출력합니다.

이 방식은 음수나 소수는 처리하지 못하지만, 0 이상의 정수라면 어떤 숫자든 손쉽게 영어 단어로 변환할 수 있습니다. 필요에 따라 음수 처리나 두 자리 이상 단위(ten, hundred 등) 확장 기능을 추가해 볼 수도 있습니다.