Проверка диапазона вводимых данных (целые числа) - Turbo Pascal
Формулировка задачи:
Не буду приводить программу, суть проблемы такова:
Я хочу учесть абсолютно все варианты ввода, но не могу организовать нормальную проверку диапазона вводимых чисел и арифметического переполнения. Отключая соответствующие директивы компилятора, я автоматически подвожу себя к тому, что после неверного ввода числа будут искажены, а меня это, разумеется, не устраивает.
Я бы попробовал ввод, скажем, в строку, но учесть все варианты ввода довольно трудно, и к тому же в условии сказано что, скажем, а,б,в - заданные целые числа (integer). Преподаватель требует предусмотрения абсолютно всего. Но здесь это просто невозможно! Пожалуйста, помогите! Очень срочно!
Решение задачи: «Проверка диапазона вводимых данных (целые числа)»
textual
Листинг программы
program checkint;uses crt; var i:longint; s:string; f:boolean; w:byte; begin clrscr; repeat readln(s); val(s,i,w); if w=0 then if(i<-32768)or(i>32767) then f:=false else f:=true; until f=true; writeln(i); end.
Объяснение кода листинга программы
В данном коде происходит проверка введенных данных на допустимость.
- Строка
readln(s);
считывает введенную пользователем строку. - Строка
val(s,i,w);
преобразует эту строку в целое число и сохраняет его в переменнойi
. - Строка
if w=0 then
проверяет, является ли результат последнего вычисления (i
) нулем. - Если
i
равно нулю, то выполняется блок кода внутриif
, который проверяет, находится ли значениеi
в допустимом диапазоне (от -32768 до 32767). - Если значение
i
находится в допустимом диапазоне, то устанавливается значение переменнойf
вfalse
, иначе - вtrue
. - Код
until f=true;
повторяет предыдущие шаги до тех пор, пока значениеf
не станетtrue
. - Последняя строка
writeln(i);
выводит значениеi
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д