Описать функцию digits(n : Natur) : Natur, подсчитывающую количество различных цифр в десятичной записи натурального числа n и процедуру print(n : Natur), печатающую в возрастающем порядке все цифры, не входящие в десятичную запись натурального числа n — Pascal(Паскаль)

uses crt;
type Natur=1..maxInt;
function digits(n:Natur):Natur;
var k:Natur;
    m:set of byte;
    d:Natur;
begin
m:=[n mod 10]; //последняя с конца цифра
d:=1;
while n>9 do //если бы был тип byte, то можно было бы сразу до 0
 begin
  k:=n mod 10; //последняя цифра
  if not(k in m) then //если ее еще нет в множестве
   begin
    d:=d+1; //считаем
    m:=m+[k];//в множество
   end;
  n:=n div 10; //сокращаем число
 end;
if not(n in m) then d:=d+1; //осталась 1 цифра, проверим ее
digits:=d;//значение функции
end;
procedure print(n:Natur);
var m:set of byte;
    k:byte;
begin
m:=[];
while n>9 do
 begin
  m:=m+[n mod 10];
  n:=n div 10;
 end;
m:=m+[n];
writeln('Цифры, не входящие в запись числа:');
for k:=0 to 9 do
if not(k in m) then write(k,' ');
end;
var a,b:Natur;
begin
write('a=');
readln(a);
b:=a; //при вычислении число уничтожим, поэтому сделаем клона
writeln('Количество разных цифр=',digits(a));
writeln;
print(b);
readln
end.

Leave a Comment

1 + 9 =