オンライン回文センサーを作成しようとしています(アルファベットは0、1、2、3、... 9で構成されています)。コードは次のとおりです。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int x=0;
int y=0;
int c;
int i=0;
while(1)
{
cin>>c;
//I keep a track of previous number in x and its reverse in y and use them to create the
//the new number and reverse at every input. Then I compare x and y. If equal the number is
//a palindrome.
/*eg:(When 121 is entered digit by digit)
i=0:-
x=10*0+1 y=0+ 10^0 *1
i=1:-
x=10*1+2 y=1+ 10^1 *2
i=2:-
x=10*12+1 y=21+ 10^2 *1
*/
x=10*x+c;
y=y+ static_cast<int>(pow(10.0,static_cast<double>(i)) *c);
cout<<"y= "<<y<<" and "<<"x= "<<x<<endl;
if(y==x)
cout<<"Palindrome"<<endl;
i++;
}
return 0;
}
まず、1を入力すると、回文として表示されました(予想どおり)。次に、2を入力しましたが、何も起こりませんでした(予想どおり'y= 21 and x= 12'
に印刷されました)。しかし、それから私は再び1を入力しましたが、今回も何も起こりませんでした(予想どおりではありません)。これは次のように出力されました。
y= 120 and x= 121
誰か教えてもらえますか、121になるはずだったのにどうやって120になったのですか?