const
str: String = '4432.2123456 5';
num_chars: Set of char = ['+', '-', '.', '0'..'9'];
var
s, buf: String;
r: Real;
i, N, code: Integer;
symbols: Set of char;
ch: char;
BEGIN
WriteLn('Введите строку, изображающую вещественое число и целое число,');
WriteLn('(или введите пустую строку: ');
ReadLn(S);
if S = '' then begin S := str; WriteLn(S) end;
{Возможны пробелы - ищем начало числа}
i:=1;
while (i < length(S)) and (NOT (S[i] in num_chars)) do inc(i);
if i = length(S) then begin
WriteLn('Ошибка: Введена пустая строка');
Halt(1); {немедленный выход из программы}
end;
{формируем строку - представление числа}
buf:='';
while (i <= length(S)) and (S[i] in num_chars) do begin
buf:=buf + S[i]; inc(i)
end;
if i = length(S) then begin
WriteLn('ОШИБКА: не введено второе число');
Halt(1)
end;
{пробуем преобразовать, возможны ошибки записи}
val(buf, r, code);
if code <> 0 then begin
WriteLn('ОШИБКА: неверная запись вещестенного числа');
Halt(1)
end;
{чтобы получить второе число просто удаляем первое}
buf := S;
delete(buf, 1, i);
val(buf, N, code);
if code <> 0 then begin
Writeln('ОШИБКА: неверная запись второго числа');
Halt(1)
end;
{Определяем набор цифр}
symbols := [];
delete(S, i, 255); {убираем остаток}
{Удаляем десятичную точку}
delete(S, pos('.',S), 1);
{Убираем лишние символы. Если N > длины, то ничего старшного - выведем все}
delete(S, N+1, 255);
for i:=1 to length(S) do
if (S[i] in ['0'..'9']) and (NOT (S[i] in symbols)) then
symbols := symbols + [S[i]];
{Выводим}
WriteLn('Использованы следующие цифры:');
i := 0;
for ch:= '0' to '9' do
if ch in Symbols then begin
Write(ch,' ');
end;
WriteLn;
END.