program Prog;
uses UnitCnt;
var n:integer;
begin
Write('Введите натуральное число N: ');
Readln(n);
Write('Кол-во различных цифр = ', CountAlpha(n));
Readln;
end.
unit UnitCnt;
interface
function CountAlpha(N:integer):byte;
implementation
function CountAlpha(N:integer):byte;
var M:array[0..9] of boolean;
i, nn:integer;
begin
nn:=N;
for i:=0 to 9 do M[i]:=false;
while nn>0 do begin
M[nn mod 10]:=true;
nn:=nn div 10;
end;
Result:=0;
for i:=0 to 9 do
if M[i] then inc(Result);
end;
end.
{$I-}
program DigitsInNumber;
uses MyUnit;
var
N:Word;
Digits:TDigitSet;
Count:Byte=0;
I:TDigitRange;
begin
{ Ввод числа }
Write('N='); ReadLn(N);
if IOResult=0 then begin
Digits:=ContainDigits(N);
Write('Contain digits:[');
for I:=Low(TDigitRange) to High(TDigitRange) do begin
if I in Digits then begin
Inc(Count);
Write(I,',');
end;
end;
WriteLn(#8,']');
WriteLn('Count:',Count);
end else begin
WriteLn('I/O Error');
end;
ReadLn;
end.
unit MyUnit;
interface
type
TDigitRange=0..9;
TDigitSet=set of TDigitRange;
function ContainDigits(Num:LongWord):TDigitSet;
implementation
function ContainDigits(Num:LongWord):TDigitSet;
var
Tmp:Byte;
Res:TDigitSet=[];
begin
{ Подсчет кол-ва различных цифр }
repeat
Tmp:=Num mod 10;
Num:=Num div 10;
if not (Tmp in Res) then begin
Res:=Res+[Tmp];
end;
until Num=0;
ContainDigits:=Res;
end;
end.
N=44343
Contain digits:[3,4]
Count:2
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.