c ++二进制到十进制转换器输入只接受1或0

时间:2015-10-12 00:59:11

标签: c++

您好我正在尝试执行将二进制数转换为小数的编程赋值。问题表明我必须将用户输入作为一个刺痛,并且如果用户输入中除了1或0之外还有任何东西,它应该给出错误消息然后提示他们给出新的输入。我已经尝试了一段时间,我似乎无法让任何人帮助我吗? 到目前为止,这是我最好的尝试,它将字符串的每个输入运行到一个if语句,但它似乎只关心最后一个数字,我想不出一个方法,所以如果有一个错误,它将保持循环陈述是真实的继续前进。

#include <iostream>
#include <string>
using namespace std;

string a;

int input();

int main()
{
    input();
    int stop;
    cin >> stop;
    return 0;
}

int input()
{
    int x, count, repeat = 0;

    while (repeat == 0)
    {
        cout << "Enter a string representing a binary number => ";
        cin >> a;
        count = a.length();
        for (x = 0; x < count; x++)
        {

            if (a[x] >= '0' &&a[x] <= '1')
            {
                repeat = 1;
            }
            else
                repeat = 0;
        }

    }

    return 0;
}

    return 0;
}

1 个答案:

答案 0 :(得分:2)

更改你的for循环:

    count = a.length();
    repeat = 1;
    for (x = 0; x < count; x++)
    {

        if (a[x] != '0' && a[x] != '1')
        {
            repeat = 0;
            break;
        }
    }

这个想法是repeat最初被假定为1(所以你假设你的输入是有效的)。稍后,如果您的任何输入字符不是0或1,则将repeat设置为0并退出循环(不需要继续查找其他字符)