所以我想写一个代码,我将检查最小和最大5个数字的输入是否是回文。我在验证用户输入是否只是数字时遇到问题,并将其限制为5个数字。
我已经尝试了cinfail,但它允许2h34j,忽略了字母。我希望程序检查所有5个字符是否都是数字,如果没有,重新启动循环。
我不能使用string或char作为变量。只有int。
任何提示?
#include <iostream>
using namespace std;
int main()
{
int n, num = 0, siffra, rev = 0;
const int inm = 0;
cout << "Mata in ett femsifrigt heltal: ";
cin >> num;
n = num;
do
{
siffra = num % 10;
rev = (rev * 10) + siffra;
num = num / 10;
} while (num != 0);
cout << " Inmatningen baklänges blir: " << rev << endl;
if (n == rev)
cout << " Nummret är en palindrom\n";
else
cout << " Numret är inte en palindrom\n";
return 0;
}
答案 0 :(得分:0)
所以我添加了if检查范围,并且还放入循环。一切都很好,除了我写信的时候,然后程序疯了,不停地重复我所有的couts。如果我用数字写,它会告诉我它应该是5个数字,然后循环回到cin,但是一旦我写了一封信,cout的循环就永远不会结束。可能是什么问题?
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "swedish");
while (true) {
int n, num = 0, siffra, rev = 0;
const int inm = 0;
cout << "Mata in ett femsifrigt heltal: ";
cin >> num;
if (num >= 9999 && num <= 100000) {
n = num;
do
{
siffra = num % 10;
rev = (rev * 10) + siffra;
num = num / 10;
} while (num != 0);
cout << " Inmatningen baklänges blir: " << rev << endl;
if (n == rev)
cout << " Nummret är en palindrom\n";
else {
cout << " Numret är inte en palindrom\n";
}
char ch = 'n'; J/j
cout << "Testa igen, [j/n] ? "; **// Yes or no option to restart the program**
cin >> ch;
if (ch == 'J' || ch == 'j')
continue;
else
break;
}
else; {
cout << " Var vänlig mata in exakt 5 siffror, och inga andra tecken!\n";
continue; **//if the user writes to few numbers or too many, or uses letter, the program should reloop.**
}
}
return 0;
}