C ++,强制用户输入仅使用5个数字和数字

时间:2017-12-01 18:51:50

标签: input numbers integer cin

所以我想写一个代码,我将检查最小和最大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;
}

1 个答案:

答案 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;
}