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

C++ 조건문(if-else)으로 숫자를 영어 단어로 변환하는 방법

문제 개요

프로그래밍 초보자에게 유용한 연습 문제 중 하나는 숫자 하나(digit)를 해당하는 영어 단어로 변환하는 것입니다. 예를 들어 입력값이 9라면 출력은 "Nine"이 되어야 하고, 입력값이 3이라면 "Three"가 출력되어야 합니다.

만약 0부터 9 범위를 벗어난 값(예: 음수나 두 자리 이상의 숫자)이 입력된다면, 프로그램은 적절한 안내 메시지를 반환해야 합니다.

해결 접근 방식

이 문제는 조건문(if-else)을 사용하여 해결할 수 있습니다. 핵심 로직은 다음과 같습니다.

  • 변환 함수 solve()를 정의하고, 매개변수로 숫자 d를 전달받습니다.
  • 먼저 d가 0 미만이거나 9보다 큰지 검사합니다. 범위를 벗어났다면 "Beyond range of 0 - 9"라는 메시지를 출력합니다.
  • 범위 내의 값이라면, 각 숫자(0~9)에 대응하는 영어 단어를 차례대로 비교하여 일치하는 단어를 출력합니다.

C++ 구현 코드

아래는 위 로직을 실제로 구현한 C++ 코드입니다.

#include <iostream>
using namespace std;

void solve(int d){
    if(d < 0 || d > 9){
        cout << "Beyond range of 0 - 9";
    }else if(d == 0){
        cout << "Zero";
    }else if(d == 1){
        cout << "One";
    }else if(d == 2){
        cout << "Two";
    }else if(d == 3){
        cout << "Three";
    }else if(d == 4){
        cout << "Four";
    }else if(d == 5){
        cout << "Five";
    }else if(d == 6){
        cout << "Six";
    }else if(d == 7){
        cout << "Seven";
    }else if(d == 8){
        cout << "Eight";
    }else if(d == 9){
        cout << "Nine";
    }
}

int main(){
    int d;
    cin >> d;
    solve(d);
    return 0;
}

실행 결과 확인

입력값으로 3을 넣어보겠습니다.

입력:

3

출력:

Three

입력값이 3일 때 프로그램이 정확히 "Three"를 출력하는 것을 확인할 수 있습니다. 만약 15나 -2처럼 범위를 벗어난 값을 입력하면 "Beyond range of 0 - 9" 메시지가 출력됩니다.

코드 설명 및 주요 포인트

  • 범위 검사가 최우선: d < 0 || d > 9 조건을 가장 먼저 확인하여 잘못된 입력을 걸러냅니다. 여기서 논리 OR 연산자(||)를 사용해야 두 조건 중 하나라도 만족할 때 올바르게 처리됩니다.
  • else-if 체인: 각 조건은 순차적으로 평가되며, 하나의 조건이 참이 되면 나머지는 건너뛰므로 효율적입니다.
  • 함수 분리: 변환 로직을 solve() 함수로 분리하면 코드의 가독성과 재사용성이 높아집니다.

참고: switch 문을 활용한 대안

같은 로직은 switch 문으로도 더 깔끔하게 작성할 수 있습니다.

void solve(int d){
    if(d < 0 || d > 9){
        cout << "Beyond range of 0 - 9";
        return;
    }
    switch(d){
        case 0: cout << "Zero"; break;
        case 1: cout << "One"; break;
        case 2: cout << "Two"; break;
        case 3: cout << "Three"; break;
        case 4: cout << "Four"; break;
        case 5: cout << "Five"; break;
        case 6: cout << "Six"; break;
        case 7: cout << "Seven"; break;
        case 8: cout << "Eight"; break;
        case 9: cout << "Nine"; break;
    }
}

두 방식 모두 동일한 결과를 제공하지만, 값이 많아질수록 switch 문이 더 읽기 쉬운 경우가 많습니다. 조건문의 기본 원리를 익히는 데는 if-else 체인 방식이 좋은 출발점입니다.