没有为数字基础检查器获得正确的解决方案

时间:2014-09-15 03:56:11

标签: c++ for-loop while-loop logic

用户从2到10进入基地。 然后,用户输入他们想要转换为十进制的数字。 但首先程序检查数字是否在他们输入的基数中。

CODE:

//ERROR CHECKING FOR DIGITS/ GETTING PROPER DIGITS INPUT
int digit = 0;
bool checker;
cout << "enter number for conversion: "; //Prompt user for base data
cin >> num;

if (num < base){
    checker = true;
}
else{
    checker = false;

}

//insert each number of digitN inside the array & check if each value is part of the base
while (checker == false){
    int len = (std::to_string(num)).size(); //attain array size
    for (int i = 0; i <= (len - 1); i++)
    {
        digit = num % 10;
        if (digit >= base)
        {
            checker = false;
            i = len;
        }
        else
        {
            checker = true;
        }
        num = (num / 10);

    }
    cout << "enter PROPER number for conversion: "; //Prompt user for base data
    cin >> num;

}

我似乎在for循环中遇到错误。有人可以帮我逻辑吗? 程序接受一个数字后,它会检查该数字的每个数字,看它是否在基数中。如果是这样,检查器将为真,否则为假。

1 个答案:

答案 0 :(得分:1)

制作检查器很简单。

bool is_valid;
unsigned int digit;
unsigned int x = ( num >= 0 ? num : -num );

do
{
    digit = x % 10;
} while ( ( is_valid = digit < base ) && ( x /= 10 ) );

您可以使用标准函数abs

代替三元运算符

我使用名称is_valid而不是变量名检查器。它不是重要的,你将使用什么名称。