この関数は、奇数桁の数字に対しては有効ですが、偶数桁のすべての数字に対しては機能していないようです(たとえば、2662ではtrueを返しますが、906609ではtrueを返します)。私は最後の20-30分の間それを理解しようとしてきましたが、私はなぜそれを見つけませんでした。Palindromeのテスト機能
#include <math.h>
int digits(int n)
{
return log10(n)+1;
}
bool ispalindrome(int n)
{
int c=digits(n);
for(int i=0; i<c/2; i++){
int a=pow(10,i),b=pow(10,c-i-1);
if( int(n/a) %10 != int(n/b) %10) return false;
}
return true;
}
#include <iostream>
#include <cstdlib>
int main(int, char**argv)
{
while (*++argv)
std::cout << *argv
<< (ispalindrome(std::atoi(*argv)) ? " is a palindrome." : " is not a palindrome.")
<< std::endl;
}
恩赦明らかではなく、あなたは、文字列回文の決意と同じように数字の比較で桁を実行するよりも入力パラメータの逆の桁から製造された2番目の数値を作成し、その結果を元の値と比較する方が簡単ではないでしょうか? – WhozCraig
どのライブラリを使用しましたか? #include?コンパイル時に警告なし? –
http://cpp.sh/9kt4を再現できません – RyanP