2013-04-16 8 views
-1

Я написал программу, которая также конвертирует 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; 
    } 

} 

ответ

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; 
    } 
} 
+0

Я думаю, что вы делаете домашнее задание KingKong здесь. – Novelocrat

+1

Я сделал Godzilla, так что это справедливо. –

+0

Спасибо, Дэвид, не могли бы вы дать мне небольшое представление о том, что я делаю неправильно? – KingKong

Смежные вопросы