C
[C언어] 각 자릿수를 순서대로 영어로 출력하는 프로그램
돌맹96
2023. 10. 5. 21:46
728x90
반응형
정수를 입력받은 후, 해당 정수가 10000보다 작은 양의 정수인 경우 각 자릿수를 순서대로 영어로 출력하는 프로그램을 구현하시오. 그렇지 않은 경우, "Invalid Input"을 출력하시오. n의 각 자릿수를 영어로 출력하시오. 이 때, 가장 큰 자릿수부터 0부터 9까지 각각 Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine로 첫 글자는 대문자여야 합니다. 더불어 각 자릿수 사이는 쉼표와 공백인 ","으로 구분되어야 합니다. n이 10000보다 작은 양의 정수가 아닌 경우 영어로 출력하는 대신 "Invalid Input"을 출력하여야 합니다.
#include <stdio.h>
#include <stdbool.h>
void printDigitInEnglish(int digit) {
switch (digit) {
case 0: printf("Zero"); break;
case 1: printf("One"); break;
case 2: printf("Two"); break;
case 3: printf("Three"); break;
case 4: printf("Four"); break;
case 5: printf("Five"); break;
case 6: printf("Six"); break;
case 7: printf("Seven"); break;
case 8: printf("Eight"); break;
case 9: printf("Nine"); break;
}
}
bool isValid(int num) {
return num > 0 && num < 10000;
}
void printNumberInEnglish(int num) {
if (num == 0) {
printDigitInEnglish(0);
return;
}
int divisor = 1000; // 4자리 수 최대로 가정
bool hasStarted = false; // 최고 자릿수가 0이 아니면 true
while (divisor > 0) {
int currentDigit = num / divisor;
if (currentDigit != 0 || hasStarted) {
if (hasStarted) {
printf(", "); // 숫자 사이에 쉼표와 공백
}
printDigitInEnglish(currentDigit);
hasStarted = true;
}
num %= divisor;
divisor /= 10;
}
}
int main() {
int num;
scanf("%d", &num);
if (isValid(num)) {
printNumberInEnglish(num);
printf("\n");
} else {
printf("Invalid Input\n");
}
return 0;
}
728x90
반응형