โปรแกรมการกลับตัวเลขของตัวเลขจะสลับตำแหน่งของตัวเลขและกลับลำดับที่นั่น
สมมติให้เป็นตัวเลข abcde กลับเป็น edcba
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
n = 786521
ผลลัพธ์
125687
ในการกลับตัวเลขของตัวเลข เราจะนำแต่ละหลักของตัวเลขจาก MSB (หลักหน่วย) มาบวกกับตัวแปรตัวเลขย้อนกลับ หลังจากนี้หารจำนวนเดิมด้วย 10 และ reverse_number จะถูกคูณด้วย 10 ซึ่งจะทำได้จนถึง ตัวเลขกลายเป็น 0
กระบวนการซ้ำๆ นี้สามารถทำได้โดยสองวิธี คือ การวนซ้ำ และการเรียกซ้ำ เราจะสร้างโปรแกรมเพื่อสร้างภาพประกอบทั้งสองวิธี
ตัวอย่าง
วิธีที่ 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; }
ผลลัพธ์
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; }
ผลลัพธ์
The number is : 4562 Reverse of number is 2654