Kiểm tra số đối xứng trong C++

Đây là bài 6/15 bài của series môn học TH Nhập môn lập trình

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.

ví dụ 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 originalNumreversedNum để 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.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Đảo ngược một số nguyên dương trong C++Tìm tất cả các ước số của một số nguyên trong C++ >>
Chia sẻ trên mạng xã hội:

Để lại một bình luận

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.