Вообщем такая задачка: предположим мне необходимо ввести размерность матрицы MxN, 0..5 of integer, но при этом я должен проверить...1.является ли то, что я ввожу числом(в противном случае вывести сообщение ), 2.является ли оно целым и 3.входит ли оно в граници от 1..5. Последние два пункта задачки то понятны, а вот как быть с первым!? Подскажите какие-нибудь идеи...Заранее благодарен
один из вариантов :
uses crt;
var
s : string;
n,error : integer;
Begin
clrscr;
write('n='); readln(s);
val(s,n,error);
if error <> 0 then
writeln('ErrorPos = ',error);
readln;
End.
число будет храниться в n, если это число
Насчет первого тоже понятно:
вводишь "нечто" в виде строки и пытаешься перевести в число через Val (с выключенной проверкой границ {$R-})... Если не произошло ошибки, то это число (таким образом, кстати, можно вообще избавиться от второго пункта).
А теперь еще кое-что:
Спасибо огромное!!!!! Теперь понятно!!!!!!!
А можно ли как-нибудь проверить входные данные (на принадлежность к числу), не используя стандартных процедур str() и val()???
var
N: integer;
begin
{$i-}
repeat
write('Vvedite naturalnoe chislo N = ');
readln(N);
until (IOResult = 0) and (n in [1 .. 5]);
{$i+}
writeln(n)
end.
Все так то оно так, но почему вот это вылетает если ввести скажем 'asd' ?
uses crt;
var
N:integer;
begin
clrscr;
{$I-}
repeat
write('Vvedite naturalnoe chislo N = ');
readln(N);
writeln('IOReslt = ', IOResult);
until IOResult = 0;
{$I+}
end.
klem4, ты ХОРОШО подумал, прежде чем это сделать?
writeln('IOReslt = ', IOResult);
Я всего навсего на знал о том что