Một số nguyên được gọi là số đối xứng nếu số đảo ngược của nó là chính nó. Hay nói cách khác, khi đọc từ trái qua phải hay từ phải qua trái số nguyên đó thì chúng ta đều được số giống nhau. Ví dụ: các số 11, 75257, 1234321 là các số đối xứng.
1. So sánh với số đảo ngược
Cách đơn giản để kiểm tra một số có phải là số đối xứng hay không là tìm số đảo ngược của số đó. Nếu số đó và số đảo ngược của nó bằng nhau thì kết luận số đó là số đối xứng. Chương trình dưới đây giúp kiểm tra số đối xứng trong C++ bằng cách so sánh với số đảo ngược.
#include <iostream>
using namespace std;
int main() {
int num;
cout << "Nhap vao mot so nguyen: ";
cin >> num;
int reversedNum = 0;
int originalNum = num;
while (num != 0) {
int digit = num % 10; // Lay chu so cuoi cung
reversedNum = reversedNum * 10 + digit;
num /= 10; // Loai bo chu so cuoi cung
}
if (originalNum==reversedNum) {
cout<<originalNum<<" la so dao nguoc.";
} else {
cout<<originalNum<<" khong la so dao nguoc.";
}
return 0;
}
Trong chương trình trên, chúng ta lưu giá trị của số cần kiểm tra tính đối xứng num
vào biến originalNum
. Sau đó, sử dụng vòng lặp while để tìm số đảo ngược reversedNum
. Cuối cùng, so sánh originalNum
và reversedNum
để kiểm tra xem num
có phải là số đối xứng hay không.
2. So sánh chuỗi
Một cách khác là chuyển đổi số nguyên thành chuỗi để kiểm tra tính đối xứng. Các bước thực hiện như sau:
1. Chuyển đổi số num
thành một chuỗi ký tự.
2. Đảo ngược chuỗi ký tự đó.
3. So sánh chuỗi ký tự ban đầu và chuỗi ký tự đảo ngược. Nếu chúng giống nhau, tức là số num
là số đối xứng.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int num;
cout << "Nhap vao mot so nguyen: ";
cin >> num;
string str = to_string(num);
string reversedStr = str;
reverse(reversedStr.begin(), reversedStr.end());
if (str == reversedStr) {
cout<<num<<" la so dao nguoc.";
} else {
cout<<num<<" khong la so dao nguoc.";
}
return 0;
}
3. So sánh các chữ số
Thay vì tìm số đảo ngược hay chuỗi đảo ngược, chúng ta có thể kiểm tra các chữ số trong số nguyên. Các bước thực hiện như sau:
1. Chuyển đổi số num
thành một chuỗi ký tự.
2. Lặp qua các ký tự trong chuỗi, so sánh ký tự đầu tiên với ký tự cuối cùng, ký tự thứ hai với ký tự kế cuối, và tiếp tục như vậy.
3. Nếu tất cả các ký tự đều giống nhau, thì số num
là số đối xứng.
Đoạn code dưới đây giúp kiểm tra số đối xứng trong C++ bằng cách so sánh các chữ số.
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(int num) {
string s = to_string(num);
int len = s.length();
for (int i = 0; i < len / 2; i++) {
if (s[i] != s[len - i - 1]) {
return false;
}
}
return true;
}
int main() {
int num;
cout << "Nhap vao mot so nguyen: ";
cin >> num;
if (isPalindrome(num)) {
cout << num << " la so doi xung.";
} else {
cout << num << " khong la so doi xung.";
}
return 0;
}
Chương trình trên sử dụng hàm isPalindrome
để kiểm tra xem một số nguyên dương có phải là số đối xứng hay không. Hàm này chuyển đổi số num thành một chuỗi ký tự s, sau đó lặp qua các ký tự của chuỗi ký tự s và so sánh chúng để kiểm tra xem số num có phải là số đối xứng hay không.