ตัวเลขพาลินโดรมจะยังคงเหมือนเดิมหากกลับหลักตัวเลข กล่าวคือ ค่าของตัวเลขจะไม่เปลี่ยนแปลง หมายเลขพาลินโดรมสามารถเรียกได้ว่าสมมาตร ตัวอย่างเช่น ตัวเลข 12321, 1551, 11 เป็นต้น เป็นพาลินโดรม เนื่องจากจะไม่เปลี่ยนแปลงแม้ว่าหลักจะกลับด้าน
โปรแกรมเช็คว่าตัวเลขเป็น palindrome หรือเปล่า มีดังนี้
ตัวอย่าง
#include<iostream> using namespace std; void palindrome(int num) { int rev=0,val; val = num; while(num > 0) { rev = rev * 10 + num % 10; num = num / 10; } if(val==rev) cout<<val<<" is a palindrome"<<endl; else cout<<val<<" is not a palindrome"<<endl; } int main() { palindrome(12321); palindrome(1234); return 0; }
ผลลัพธ์
12321 is a palindrome 1234 is not a palindrome
ในโปรแกรมข้างต้น ฟังก์ชัน palindrome จะค้นหาว่าตัวเลขนั้นเป็น palindrome หรือไม่ ฟังก์ชันรับพารามิเตอร์หนึ่งตัว นั่นคือ num ก่อนที่กระบวนการใดๆ จะเกิดขึ้น จะมีการทำซ้ำ num เช่น val ค่าของ num จะถูกกลับรายการและเก็บไว้ใน rev.
ซึ่งแสดงโดยข้อมูลโค้ดต่อไปนี้ −
int rev=0,val; val = num; while(num > 0) { rev = rev * 10 + num % 10; num = num / 10; }
หลังจากนี้ มูลค่าของ rev จะถูกนำมาเปรียบเทียบกับ val ไม่ใช่ num เนื่องจากตอนนี้ค่าของ num เป็น 0 หาก rev เท่ากับ val ตัวเลขจะเป็น palindrome และพิมพ์ออกมา ไม่เช่นนั้นตัวเลขจะไม่ใช่ palindrome
ซึ่งสามารถเห็นได้ในข้อมูลโค้ดต่อไปนี้
if(val==rev) cout<<val<<" is a palindrome"<<endl; else cout<<val<<" is not a palindrome"<<endl;