Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

주어진 숫자에서 모든 0을 5로 바꾸는 프로그램을 C++로 작성하십시오.

<시간/>

정수 N이 주어졌을 때 작업은 숫자에 나타나는 모든 0을 '5'로 바꾸는 것입니다. 단, 앞에 '0'이 붙은 숫자는 그대로 유지되므로 '5'로 바꿀 수 없습니다. 예를 들어,

입력-1 -

N= 1007

출력 -

1557

설명 − 주어진 숫자에는 2개의 0이 있으며 '5'로 대체하면 1557로 출력됩니다.

입력-2 -

N = 00105

출력 -

155

설명 − 주어진 숫자가 선행 '0'으로 시작하므로 무시할 수 있으며 중간에 0을 '5'로 바꾼 후 출력은 155로 출력됩니다.

이 문제를 해결하기 위한 접근 방식

주어진 숫자의 모든 0을 '5'로 바꾸려면 숫자의 마지막 자릿수를 찾아 추출할 수 있습니다. 해당 숫자의 마지막 숫자가 '0'이면 값을 변경하고 '5'로 바꾸고 다른 숫자를 추출합니다. 그러나 주어진 숫자의 선행 '0'은 무시되어야 합니다.

이 문제는 먼저 마지막 숫자를 추출한 다음 해당 숫자의 다른 숫자를 추출하면서 동일한 함수를 다시 호출하는 재귀 접근 방식을 사용하여 해결할 수 있습니다.

  • 숫자 N을 입력하세요.

  • 정수 함수 convertToFive(int N)는 숫자를 입력으로 받고 모든 0을 '5'로 바꾸어 수정된 숫자를 반환합니다.

  • 기본 경우 숫자가 '0'이면 0을 반환하고, 그렇지 않으면 해당 숫자의 마지막 숫자를 추출하여 확인합니다.

  • 숫자의 마지막 숫자가 '0'이면 값을 '5'로 바꿉니다.

  • '10'을 나누고 '10'을 곱하여 숫자의 다른 자릿수를 취하는 재귀 함수를 반환합니다.

  • 마지막 숫자를 추가하여 추출한 출력을 반환합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int convertToFive(int N) {
   if(N==0){
      return 0;
   }
   int last_digit= N%10;
   if(last_digit==0)
      last_digit=5;
   return convertToFive(N/10)*10 +last_digit;
}
int main() {
   int N= 14006;
   cout << convertToFive(N) << endl;
}

출력

위의 코드를 실행하면 출력이 다음과 같이 인쇄됩니다.

14556

주어진 숫자에 0이 두 개 있기 때문에 숫자 14006을 바꾸면 14556이 됩니다.