C++で回文数を判定する方法


C++で回文数を判定する方法について説明します。回文数とは、前から読んでも後ろから読んでも同じ値になる数のことです。

方法1: 文字列として処理する方法 まず、回文数を判定するために数値を文字列に変換します。次に、文字列の前半部分と後半部分を比較して、対応する文字が一致するかどうかを確認します。もし一致しない文字があれば、回文数ではありません。

以下はこの方法のコード例です:

#include <iostream>
#include <string>
bool isPalindrome(int number) {
    std::string str = std::to_string(number);
    int length = str.length();
    for (int i = 0; i < length / 2; i++) {
        if (str[i] != str[length - i - 1]) {
            return false;
        }
    }
    return true;
}
int main() {
    int number;
    std::cout << "整数を入力してください: ";
    std::cin >> number;
    if (isPalindrome(number)) {
        std::cout << number << " は回文数です" << std::endl;
    } else {
        std::cout << number << " は回文数ではありません" << std::endl;
    }
    return 0;
}

方法2: 数値として処理する方法 数値として処理する場合、余りを利用して数値を逆順にすることができます。元の数値と逆順の数値が一致すれば、回文数です。

以下はこの方法のコード例です:

#include <iostream>
bool isPalindrome(int number) {
    int originalNumber = number;
    int reversedNumber = 0;
    while (number > 0) {
        int digit = number % 10;
        reversedNumber = reversedNumber * 10 + digit;
        number /= 10;
    }
    return (originalNumber == reversedNumber);
}
int main() {
    int number;
    std::cout << "整数を入力してください: ";
    std::cin >> number;
    if (isPalindrome(number)) {
        std::cout << number << " は回文数です" << std::endl;
    } else {
        std::cout << number << " は回文数ではありません" << std::endl;
    }
    return 0;
}

上記のコード例では、ユーザーから整数を入力し、その数値が回文数かどうかを判定します。それぞれの方法で回文数を判定することができます。