#c
#c
Вопрос:
Часть, которую я не могу решить, заключается в том, что я проверяю числовые цифры, отличные от 1 или 0, используя checknumber() . Теперь, если цифры отличаются от 0 или 1, попросите пользователя снова ввести число, пока цифры не будут равны только 0 и 1. После этого преобразуйте в двоичный файл, а затем снова проверьте, что число больше -1, а число отрицательное, тогда только выход. основная функция:
int main()
{
int num = 0, flag;
while (num > -1) {
do {
cout << "Enter Number: ";
cin >> num;
} while (checknumber(num, flag) == 0);
cout << "Result in Decimal = ";
cout << binaryToDecimal(num) << endl;
}
}
Это мой контрольный номер ():
int checknumber(int number, int flag)
{
while (number != 0) {
int val = number % 10;
if ((val != 1) amp;amp; (val != 0)) {
flag = 0;
break;
}
else {
flag = 1;
}
return flag;
}
}
результат, который я получаю при вводе числа, отличного от 0 или 1:
Комментарии:
1. Ваша
checknumber()
функция может завершиться без установки возвращаемого значения.2. Вы всегда должны проверять состояние
cin
после считывания значения.3. Где инициализируется переменная
flag
? Я думаю, проблема, из-за которой вы никогда не инициализируетеflag
в main, устраняет проблему, из-за которой вы никогда не используете параметрflag
в checknumber .4. @NathanPierson , я уже отредактировал.
5. Пожалуйста, не меняйте код в своем вопросе после получения ответа. Ваше редактирование делает приведенный ниже ответ бессмысленным. Я отменил это редактирование.
Ответ №1:
В вашей checknumber
функции вы никогда не делите number
, и, таким образом, вы застряли в бесконечном цикле. Вы также возвращаетесь на первой итерации цикла. Я не понимаю использования flag
ни того, ни другого.
Исправленный checknumber
будет:
int checknumber(int number)
{
while(number != 0)
{
int val = number % 10;
if((val != 1) amp;amp; (val != 0))
{
return 0;
}
number /= 10;
}
return 1;
}
Комментарии:
1. использование
bool
в качестве возвращаемого типа кажется еще более правильным.2. @Jarod42 Я хотел упростить просто вставить его в его существующий код.