Чисто по определениям (без примеров): 1) Платное - ты платишь за возможность использования полного функционала программы единажды. Бесплатное - полный функционал программы распространяется бесплатно Условно-беспланое - программное обеспечение, распространяемое бесплатно, но имеющее платные "модули" 2) Системное - все программы и компоненты, поставляемые вместе с операционной системы, загружаемые с загрузочного диска независимо от желания пользователя. Прикладное - все программное обеспечение, установленное пользователем.
Могу предложить такой вариант - в цикле repeat число вводится как строка и посимвольно проверяется. если введено неправильно - возвращает на ввод, если правильно - преобразует строку в число для дальнейшей работы.
var a,err: integer; s: string; i: byte; error: boolean; begin repeat error:=true; writeln ('введите число'); readln (s); for i:=1 to length(s) do begin if (ord(s[i])<48) or (ord(s[i])>57) then begin error:=false; writeln ('введено не число'); break; end end; until error=true; val(s,a,err); writeln ('введено число ',a); end.
Пример: введите число 12O введено не число введите число 120 введено число 120
1) Платное - ты платишь за возможность использования полного функционала программы единажды.
Бесплатное - полный функционал программы распространяется бесплатно
Условно-беспланое - программное обеспечение, распространяемое бесплатно, но имеющее платные "модули"
2) Системное - все программы и компоненты, поставляемые вместе с операционной системы, загружаемые с загрузочного диска независимо от желания пользователя.
Прикладное - все программное обеспечение, установленное пользователем.
var
a,err: integer;
s: string;
i: byte;
error: boolean;
begin
repeat
error:=true;
writeln ('введите число');
readln (s);
for i:=1 to length(s) do begin
if (ord(s[i])<48) or (ord(s[i])>57)
then begin error:=false; writeln ('введено не число'); break; end
end;
until error=true;
val(s,a,err);
writeln ('введено число ',a);
end.
Пример:
введите число
12O
введено не число
введите число
120
введено число 120