После однократного выполнения двух функций цикл do while
продолжает переходить к условию while
и переходит прямо к функции getInt, которая затем застревает в scanf("%d,%c", &Value, &NL)
до символа (или слова, подобного офису).) вводится.Это будет происходить еще 3 раза, пока не появится четвертое сообщение «Недопустимый INTEGER», которое будет отображаться в сообщении «OUT OF RANGE», только для того, чтобы процесс who повторился снова.Не уверен, что цикл do-while
не работает или if statements
не работает.
При тестировании функции (ей) со словом (то есть офисом) он getInt
объявитзначения «недействительный INTEGER», и при тестировании со значениями 99 или 501 getIntInRange
должен объявить значение «OUT OF RANGE», однако функция getIntInRange
будет показывать сообщение «OUT OF RANGE» только после 5 итераций(при чередовании значения и символа сообщение «OUT OF RANGE» будет отображаться после четвертой попытки ввода значения
// getInt function definition goes here:
int getInt(void) {
int Value = 0;
char NL = "";
do {
scanf("%d%c", &Value, &NL);
if (NL != '\n') {
clearKeyboard();
printf("*** INVALID INTEGER *** <Please enter an integer>: ");
} else {
};
} while (NL != '\n');
return Value;
}
// getIntInRange function definition goes here:
int getIntInRange(int lowerBound, int upperBound) {
do {
//getInt();
if (getInt() < lowerBound | getInt() > upperBound) {
printf("*** OUT OF RANGE *** <Enter a number between %d and %d>: ", lowerBound, upperBound);
} else {
continue;
};
} while (getInt() < lowerBound | getInt() > upperBound);
return getInt();
}
Моя функция getIntInRange
предполагает получение значения от getInt
function (getInt
проверяет, является ли введенное значение целым числом) и сравнивает значения с lowerBound (установленным как 100 в другом исходном коде) и upperBound (установленным как 500 в другом исходном коде).вне диапазона, тогда будет отображаться сообщение об ошибке.