Я написал программу, которая также преобразует 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;
}
}
Я полагаю, вы имели в виду что-то вроде этого:
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;
}
}
Других решений пока нет …