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.

Рейтинг@Mail.ru

вверх гостевая; E-mail
Hosted by uCoz