【问题标题】:C++, forcing user input to use exactly 5 numbers and numbers onlyC++,强制用户输入恰好使用 5 个数字和仅数字
【发布时间】:2018-05-15 22:24:37
【问题描述】:

所以我正在尝试编写一个代码,我将在其中检查最小和最大 5 个数字的输入是否是回文。我在验证用户输入是否仅为数字并将其限制为 5 个数字时遇到问题。

我试过 cinfail 但它允许 2h34j,忽略字母。我希望程序检查所有5个字符是否都是数字,如果不是,重新开始循环。

我不能使用字符串或字符作为变量。只有 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;
}

【问题讨论】:

  • 每个正好有五个有效数字的整数都在 10000 和 99999 之间,包括 10000 和 99999。您可以检查用户是否在此范围内输入了数字。如果您无法输入strings 或chars,那么我认为这样的范围检查是您能做的最好的。

标签: input numbers integer cin


【解决方案1】:

所以我添加了 if 检查范围,并且还放入了一个循环。一切都很好,除了当我写信时,程序会发疯并不停地重复我所有的 couts。如果我用数字写,它会告诉我应该是 5 个数字,然后循环回到 cin,但只要我写一个字母,couts 的循环就永远不会结束。可能是什么问题?

#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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多