Pers.narod.ru. Алгоритмы. Контроль правильности ввода целых чисел на Паскале |
Можно ли на Паскале организовать полноценную проверку правильности ввода, не только с помощью условий, но и контроль типа данных, например, чтобы программа не "вылетала" при вводе строки вместо числа?
Конечно можно, если узнать немного больше о директивах компилятора в этом языке. Работают они, по меньшей мере, в классических средах от Borland и Free Pascal.
В приведённой ниже программке функция ReadInt организует ввод целого числа с проверками правильности и соответствия типа. Такие же функции легко написать для других типов.
Параметр msg - это сообщение, выводимое перед запросом на ввод числа, параметр a содержит возвращаемое процедурой значение (можно было написать и функцию), параметры min и max задают наименьшее и наибольшее допустимые значения, если min=max, то контроля на диапазон значений не делается.
uses crt;
procedure ReadInt (msg:string; var a:integer; min,max:integer);
begin
repeat
writeln;
write (msg);
if min<max then write (' [',min,',',max,']: ')
else begin
min:=-MAXINT; max:=MAXINT; write (':');
end;
{$I-}read (a);{$I+}
if IoResult<>0 then writeln ('Неверный ввод, пожалуйста, повторите')
else if (a<min) or (a>max) then
writeln ('Введенное значение должно попадать в интервал [',min,',',max,']')
else break;
until false;
end;
var a,b:integer;
begin
clrscr;
ReadInt ('A',a,0,1); {Допустимы только 0 и 1}
ReadInt ('B',b,0,0); {Допустимо любое целое число}
writeln ('A=',a,' B=',b);
reset (input); readkey;
end.
|
|