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.
гостевая; E-mail |