repeat
read(ch);
if ch in['0'..'9'] then begin
val(ch,a,kod_error);
mn:=mn+[a] //mn:set of byte
end;
until ch='z'
У меня паскаля нету, так что проверяй, писал тут
if ch in['0'..'9'] then begin
val(ch,a,kod_error);
mn:=mn+[a] //mn:set of byte
end;
if ch in['0'..'9'] then mn := mn + [Ord(ch) - Ord('0')];
да еще и переменная не нужна... Только сдается мне - это не совсем то, что надо по заданию. Так можно вводить только числа 0 .. 9, двухзначные и трехзначные - уже выпадают, хотя во множестве Byte-ов они могут присутствовать...