Computer >> Máy Tính >  >> Lập trình >> C ++

Viết một chương trình bằng C ++ để thay thế tất cả các số 0 bằng 5 trong một số nhất định

Cho một số nguyên N, nhiệm vụ là thay thế tất cả các số 0 xuất hiện trong số bằng ‘5’. Tuy nhiên, số có ‘0’ đứng đầu không thể được thay thế bằng ‘5’ vì nó không thay đổi. Ví dụ:

Đầu vào-1 -

N= 1007

Đầu ra -

1557

Giải thích - Số đã cho có 2 số không khi được thay thế bằng ‘5’ sẽ cho kết quả là 1557.

Đầu vào-2 -

N = 00105

Đầu ra -

155

Giải thích - Vì số đã cho bắt đầu bằng chữ ‘0’ đứng đầu nên có thể bị bỏ qua và kết quả sau khi thay số 0 ở giữa bằng ‘5’ thì kết quả đầu ra là 155.

Phương pháp tiếp cận để giải quyết vấn đề này

Để thay thế tất cả các chữ số 0 trong một số đã cho bằng '5', chúng ta có thể tìm và trích xuất chữ số cuối cùng của số đó. Nếu chữ số cuối cùng của số đó là ‘0’ thì thay đổi và thay thế giá trị bằng ‘5’ và trích ra một chữ số khác. Tuy nhiên, bất kỳ chữ ‘0 đứng đầu nào trong số đã cho phải bị bỏ qua.

Vấn đề có thể được giải quyết bằng cách sử dụng phương pháp đệ quy trong đó trước tiên chúng ta sẽ trích xuất chữ số cuối cùng và sau đó gọi lại hàm tương tự trong khi trích xuất chữ số khác của số đó.

  • Nhập một số N.

  • Một hàm Integer convertToFive (int N) nhận một số làm đầu vào và trả về số đã sửa đổi bằng cách thay thế tất cả các số 0 bằng ‘5’.

  • Trong trường hợp cơ sở, nếu số là '0', thì trả về 0, nếu không thì trích xuất chữ số cuối cùng của số đó và kiểm tra,

  • Nếu chữ số cuối cùng của số là '0' thì hãy thay thế giá trị bằng '5'.

  • Trả về hàm đệ quy nhận một chữ số khác của số bằng cách chia "10" và nhân với "10".

  • Trả về kết quả trích xuất chữ số cuối cùng bằng cách thêm nó vào đó.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, thì nó sẽ in đầu ra là,

14556

Vì có hai chữ số 0 trong một số đã cho nên sau khi thay số 14006, nó sẽ thành 14556.