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

การใช้งานแบบเรียกซ้ำของ atoi() ใน C++


เราได้รับสตริงที่มีตัวเลข เป้าหมายคือการหาจำนวนที่เท่ากันโดยใช้วิธีการแบบเรียกซ้ำ atoi() int atoi(const char *str) แปลงสตริงอาร์กิวเมนต์ str เป็นจำนวนเต็ม (พิมพ์ int)

ตัวอย่าง-:

ป้อนข้อมูล − Str[] ="58325"

ผลผลิต − ทศนิยมเทียบเท่าคือ :58325

คำอธิบาย − สตริงมีตัวเลขเทียบเท่า 58325

ป้อนข้อมูล − Str[] ="00010"

ผลผลิต − ทศนิยมเทียบเท่าคือ :1

คำอธิบาย − สตริงมีตัวเลขเทียบเท่า 10

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

ในแนวทางนี้ เราใช้ฟังก์ชันเรียกซ้ำ recurAtoi() ซึ่งรับสตริงอินพุตและความยาว และสำหรับอักขระแต่ละตัวแปลงให้เป็นทศนิยมแล้วคูณด้วย 10 เพิ่มผลลัพธ์ก่อนหน้าลงไป

  • นำสตริงอินพุต Str[] ที่มีตัวเลข

  • คำนวณความยาวโดยใช้ strlen(Str)

  • ฟังก์ชัน recurAtoi(char *str, int len) รับอินพุตและส่งกลับตัวเลขที่คำนวณโดยใช้ฟังก์ชัน recursive atoi()

  • หากความยาวเท่ากับ 1 ให้ส่งคืนหลัก *str -’0’.

  • ใช้ temp=10*recurAtoi(str,len-1)

  • และตั้งค่า temp=temp+str[len-1]-'0'.

  • เมื่อสิ้นสุดอุณหภูมิกลับ

  • พิมพ์ผล

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int recurAtoi(char *str, int len){
   if (len == 1){
      return *str - '0';
   }
   int temp=10*recurAtoi(str,len-1);
   temp=temp+str[len-1]-'0';
   return (temp);
}
int main(void){
   char Str[] = "58325";
   int length = strlen(Str);
   cout<<"Equivalent decimal :"<<recurAtoi(Str, length);
   return 0;
}

ผลลัพธ์

หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

Equivalent decimal : 58325