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

C++에서 숫자의 자릿수를 뒤집는 프로그램 작성 방법

숫자의 자릿수를 뒤집는 프로그램은 각 자릿수의 위치를 서로 교환하여 원래 순서를 거꾸로 만드는 작업을 수행합니다.

예를 들어 abcde라는 다섯 자리 숫자가 있다면, 이를 뒤집으면 edcba가 됩니다.

다음 예시를 통해 문제를 좀 더 쉽게 이해해 보겠습니다.

입력

n = 786521

출력

125687

숫자의 자릿수를 뒤집으려면 일의 자리부터 한 자릿수씩 차례로 가져와서 결과를 저장할 변수(reverseNumber)에 추가합니다. 그런 다음 원래 숫자를 10으로 나누고, reverseNumber에는 10을 곱합니다. 이 과정을 원래 숫자가 0이 될 때까지 반복하면 자릿수가 완전히 뒤집힌 숫자를 얻을 수 있습니다.

이러한 반복 작업은 반복문(iteration)재귀(recursion), 두 가지 방법으로 구현할 수 있습니다. 아래에서 두 가지 방식을 모두 보여주는 프로그램을 살펴보겠습니다.

예제

방법 1: 반복문 접근법

#include <iostream>
using namespace std;
int reversDigitsIt(int n) {
    int reverseNumber = 0;
    while(n > 0){
        reverseNumber = reverseNumber*10 + n%10;
        n /= 10;
    }
    return reverseNumber;
}
int main() {
    int n = 4562;
    cout<<"The number is : "<<n<<endl;
    cout<<"Reverse of number is "<<reversDigitsIt(n);
    return 0;
}

반복문 방식에서는 while 문을 사용해 n % 10으로 마지막 자릿수를 하나씩 추출하고, reverseNumber에 10을 곱한 뒤 더하여 자릿수를 왼쪽으로 밀어냅니다. 이후 n을 10으로 나누어 다음 자릿수를 처리하고, n이 0이 되면 반복을 종료합니다.

출력

The number is : 4562
Reverse of number is 2654

예제

방법 2: 재귀 접근법

#include <iostream>
using namespace std;
int reverseNumber = 0;
int numPos = 1;
void reversDigitsRec(int n) {
    if(n > 0){
        reversDigitsRec(n/10);
        reverseNumber += (n%10)*numPos;
        numPos *= 10;
    }
}
int main() {
    int n = 4562;
    cout<<"The number is : "<<n<<endl;
    reversDigitsRec(n);
    cout<<"Reverse of number is "<<reverseNumber;
    return 0;
}

재귀 방식에서는 먼저 n / 10으로 자신을 다시 호출하여 가장 높은 자릿수부터 처리되도록 한 뒤, 호출이 되돌아오면서 각 자릿수에 자리값(numPos)을 곱해 reverseNumber에 더합니다. 이 과정에서 전역 변수 reverseNumber와 numPos를 사용하며, 재귀 호출이 모두 끝나면 자릿수가 뒤집힌 최종 결과가 완성됩니다.

출력

The number is : 4562
Reverse of number is 2654