如何从同一输入获得两个输入(C ++)

时间:2013-09-11 13:10:09

标签: c++

标题可能听起来令人困惑所以首先我会告诉你我的代码,我制作了这个简单的程序来获取两个输入值并将它们相乘,而另一件事,但这并不重要,它的工作正常:

#include <iostream>

using namespace std;

main()
{
    int a,b,c,d,e;
    char j = 4;
    cout << "Welcome to Momentum Calculator\n\n";
    cout << "------------------------------\n";
    cout << "Please Enter Mass in KG (if the mass in in grams, put \"9999\" and hit enter): \n\n";
    cin >> a;
    if (a==9999) {
        cout << "\nPlease Enter Mass in grams: \n\n";
        cin >> d;
    }
    else {
        d = 0;
    }
    cout << "\nPlease Enter Velocity \n\n";
    cin >> e;
    if (d == 0)
    {
        c = (a*e);
    }
    else {
        c = (e*d)/100;
    }
    cout << "\nMomentum = " << c;
    cin.get();
    cin.ignore();
    while (j == 4)
    {
        cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
        main();
    }
}

现在你可以看到,我的变量是一个int(整数),我的问题是如果我输入一个英文字母(az)或任何不是数字的东西将导致它以无限速度无限次重复我的程序。我想要一个字符串/ char来查看我的var“a”是一个字母还是其他什么,但不知道如何。我可以做到,但是,我希望用户只在“a”中输入一次,然后我再次进入。请帮助:)

3 个答案:

答案 0 :(得分:1)

在ctype库中有一个名为isalpha的函数,检查你的变量是否是一个字母,这样你就可以使用isalpha函数。

答案 1 :(得分:1)

来自标准库的isdigit或isalpha会帮助你吗?

P.S。 1KG包含1000克,所以你应该除以1000,而不是100;

更新: 似乎我理解你的问题...... 你需要cin.clear();在cin.get()和cin.ignore()之前。 否则这些调用将不会执行任何操作,因为cin处于错误状态。

答案 2 :(得分:0)

我认为你可以得到一个字符串,并查看它是否包含英文字母,如果它包含,再次询问输入(你可以在while循环中执行)。输入正确的输入后,解析它并找到它的编号。