验证八进制到十进制转换

时间:2013-04-16 03:35:25

标签: c++ octal

我写了一个程序,也转换了一个4位正八进制数,它的十进制等值。但是,在尝试验证用户输入(0-7)时发生了问题。在我的for循环内也阻止用户输入8或9,当我输入应该允许的数字时,程序仍然终止并显示“你输入的数字大于7”。

不确定我做错了什么,任何帮助都将不胜感激。这是有问题的代码。

int main()
{
 //declare variables
int i, octNum = 0, decNum = 0, arr[20];         

//get octal value from user input
cout << "Enter the 4 digit Octal Number you would like too convert: " ;     
cin >> octNum;

// validate input if value is negative, or greater then 4 digits
if(octNum < 0)
    {
        cout << "Please enter a positive octal number from 0-7\n";
        return 0;
    }
else if(octNum > 7777)
    {
        cout << "Please enter a 4 digit octal number from 0-7 only\n";
        return 0;
    }

// Validate for octal digits 0-7. If 8 or 9 prompt user too start again
for(int n = 0; octNum > 0; n++)
{
    if(n == 8 || n == 9)
    {
        cout << "One of the numbers was above 7 \nPlease enter an octal number from 0-7\n";
        return 0;
    }

}

1 个答案:

答案 0 :(得分:0)

我认为你的意思是这样的:

for(int n = octNum; n > 0; n /= 10)
{
    if ((n % 10) > 7)
    {
        cout << "One of the digits was above 7\nPlease enter a valid octal number" << endl;
        return 0;
    }
}