Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เขียนโปรแกรมในภาษา C++ เพื่อแทนที่ 0 ทั้งหมดด้วย 5 ในตัวเลขที่กำหนด


ด้วยจำนวนเต็ม N ภารกิจคือการแทนที่ 0 ทั้งหมดที่ปรากฏในตัวเลขด้วย '5' อย่างไรก็ตาม หมายเลขที่มี '0' นำหน้าไม่สามารถแทนที่ด้วย '5' เนื่องจากยังคงไม่เปลี่ยนแปลง ตัวอย่างเช่น

อินพุต-1

N= 1007

ผลผลิต

1557

คำอธิบาย − จำนวนที่กำหนดมีศูนย์ 2 ตัว ซึ่งเมื่อแทนที่ด้วย '5' ผลลัพธ์ที่ได้จะเป็น 1557

อินพุต-2

N = 00105

ผลผลิต

155

คำอธิบาย − เนื่องจากตัวเลขที่ระบุขึ้นต้นด้วย '0' นำหน้าซึ่งสามารถละเว้นได้ และเอาต์พุตหลังจากแทนที่ 0 ตรงกลางด้วย '5' ผลลัพธ์ที่ได้จะเป็น 155

แนวทางในการแก้ปัญหานี้

ในการแทนที่ 0 ทั้งหมดในตัวเลขที่กำหนดด้วย '5' เราสามารถค้นหาและแยกตัวเลขหลักสุดท้ายของตัวเลขได้ หากหลักสุดท้ายของตัวเลขนั้นเป็น '0' ให้เปลี่ยนและแทนที่ค่าด้วย '5' และแยกตัวเลขอื่นออกมา อย่างไรก็ตาม จะต้องละเว้น '0' นำหน้าใดๆ ในตัวเลขที่กำหนด

ปัญหาสามารถแก้ไขได้โดยใช้วิธีการเรียกซ้ำ โดยเราจะแยกตัวเลขหลักสุดท้ายออกก่อน จากนั้นจึงเรียกใช้ฟังก์ชันเดียวกันอีกครั้งในขณะที่แยกหลักอื่นๆ ของหมายเลขนั้น

  • ป้อนตัวเลข N.

  • ฟังก์ชัน Integer converToFive(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