この入力された番号の次の回文数を取得するまで、番号をインクリメントすることになっているこのコードを作成しました。
プログラムは、数値を文字列として受け取ります。これは、非常に大きな桁数(0 <桁<1000000)である可能性があるためです。
コード
int main ()
{
string number = "1243";
int position = number.length()-1;
do
{
if (number[position] == '9')
{
//cout << "hereee";
number[position] = '0';
int n1 = (int)number[position-1] - '0';
n1++;
number[position-1] = n1 + '0';
nextPalindrome[position-1];
cout << number <<"hereee2"<< endl; // only to determine if i get in "if"
}
else
{
int n1 = (int)number[position] - '0';
n1++;
number[position] = n1 + '0';
cout << number <<"hereee1" << endl; // only to determine if i get in "else"
}
} while (isPalindrome(number) == false);
}
現在の位置の数字を取得し、それをインクリメントして、再び文字として返し始めます
問題
cout << number <<"hereee1" << endl;
この行は、実行中の番号のステータスを示しており、次のようになっています。
12"6 hereee1
12"7 hereee1
12"8 hereee1
12"9 hereee1
12#0 hereee2
12#1 hereee1
それがなければならない間
1236 hereee1
1237 hereee1
1238 hereee1
1239 hereee1
1240 hereee2
1241 hereee1
エラーがどこにあるのかわかりません..誰かが助けることができます
注:「isPalindrome」は、文字列をパラメータとして受け取る関数であり、元の文字列がその逆に等しい場合はtrueを返します。それ以外の場合はfalseを返します。