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

โปรแกรม C++ เช็คว่าตัวเลขเป็น Palindrome หรือไม่


ตัวเลขพาลินโดรมจะยังคงเหมือนเดิมหากกลับหลักตัวเลข กล่าวคือ ค่าของตัวเลขจะไม่เปลี่ยนแปลง หมายเลขพาลินโดรมสามารถเรียกได้ว่าสมมาตร ตัวอย่างเช่น ตัวเลข 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;