Проверка на нажатие 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д