Проверка на нажатие Enter - Pascal
Формулировка задачи:
Есть часть программы, в которой мы вводим основание системы счисления, оно может быть от 2-х до 36. Если пользователь вводит какой-то символ вместо числа или число не попадающее в диапазон от 2 до 36, то программа просит повторить ввод. Хотелось бы еще чтобы при нажатия клавиши Enter был не просто переход на новую строку, а предложение ввести число заново (программа должна считать что введено "пустое число").
repeat
write('Enter radix: ');
readln(radix);
InpRes := IOResult;
if InpRes = 0 then
RadRes := (radix >= 2) and (radix <= 36);
if (not RadRes) or (InpRes <> 0) then
writeln('Wrong radix, please note, that radix can be from 2 to 36');
until (RadRes = true) and (InpRes = 0);Решение задачи: «Проверка на нажатие Enter»
textual
Листинг программы
var s:string;
radix,k:integer;
................................
repeat
write('Enter radix: ');
readln(s);
val(s,radix,k);
if(k<>0)or not(radix in [2..36])
then writeln('Wrong radix, please note, that radix can be from 2 to 36');
until (k=0) and (radix in [2..36]);
Объяснение кода листинга программы
- Создается переменная
sтипа string для ввода пользователем значения. - Создаются переменные
radixиkтипа integer для хранения целочисленных значений. - Пользователю выводится приглашение
Enter radix:для ввода значения. - Пользователь вводит значение, которое сохраняется в переменной
s. - Вызывается процедура val, которая пытается преобразовать строковое значение
sв целочисленное значениеradix, а значениеkиспользуется для проверки успешности преобразования. - Если
kне равно 0 илиradixне входит в диапазоне от 2 до 36, выводится сообщениеWrong radix, please note, that radix can be from 2 to 36, оповещающее пользователя о неверном вводе. - Цикл повторяется до тех пор, пока
kне станет равным 0 и значениеradixбудет находиться в диапазоне от 2 до 36.