下一个回文 .奇怪的字符输出
The Next Palindrome .. Strange Character Output
我编写了这段代码,它应该递增一个数字,直到得到这个输入数字的下一个回文数。
程序将数字作为字符串",因为它可能是一个非常大的数字 ( 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
位数字>当position-1
处的数字'9'
时,结果是什么?
int n1 = (int)number[position-1] - '0';
n1++;
number[position-1] = n1 + '0';
你没有很好地处理结转...此部分无效:
int n1 = (int)number[position-1] - '0';
n1++;
number[position-1] = n1 + '0';
这只是增加前一个位置的数字。如果它恰好是'9'
(与马茨·彼得森试图建议的相同),它就会溢出......但是,它也应该结转到下一个数字...这是一个递归解决方案(请注意,可能存在语法错误,我很久没有用C++编码了......
/*
* This function adds one to the specified digit of a
* string containing a decimal integer.
*
* Contains no checks whatsoever. Behavior is undefined when
* not supplied a valid input string.
*/
int addOneToDigit (string number, int digit)
{
if (number[digit] == '9')
{
number[digit] = '0';
//we need to handle getting a longer string too...
if(digit>0)
{
return addOneToDigit(number, digit-1);
}
else
{
return "1" + number;
}
}
else
{
int n1 = (int)number[digit] - '0';
n1++;
number[digit] = n1 + '0';
}
return number;
}
main() 看起来像这样:
int main ()
{
string number = "1243";
do
{
number = addOneToDigit(number,number.length()-1)
}
while (isPalindrome(number) == false);
}
相关文章:
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 字符的输入/输出操作
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- C++输出奇怪的字符而不是数字 (Windows)
- 如何存储 unicode 字符并将其输出到文件?
- C++中附加的字符*的奇怪输出
- 来自无符号字符缓冲区的虚拟输出
- 将未签名的字符写入输出文件
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- x86 上的指针大小和奇怪的字符输出
- 如何修复C++中的随机字符输出?
- Visual Studio-怪异的字符输出
- 需要我当前的字符输出,这是它在C++中的整数值
- 宽字符输出结果
- 将字符输出随机化为文本文件
- C++和printf-奇怪的字符输出
- 显示无符号字符*和有符号字符*输出的结果是否完全相同
- 下一个回文 .奇怪的字符输出
- 不要将宽字符输出到命令提示符