uses crt;
var i:longint;
function colcifr(a:longint):word;
var s:string;
i,j:word;
begin
str(a,s);
for i:=1 to length(s) do
for j:=i+1 to length(s) do
if (s<>' ') and (s=s[j]) then s[j]:=' ';
j:=0;
for i:=1 to length(s) do
if s<>' ' then j:=j+1;
colcifr:=j;
end;
begin
clrscr;
writeln('vvedite chislo');
readln(i);
writeln(colcifr(i));
readln;
end.
(Pascal)функция подсчета разных цифр в числе
Описать функцию, которая возвращает количество разных цифр входящих в запись числа типа Longint.
[COLOR=blue][/COLOR]
[COLOR=blue]Pascal[/COLOR]
1) Ищещь функцию, которая преобоазовывает Longint в строку(буквенный массив)..
К примеру, было число 12345664..
Строка1 у нас получилась "12345664"
2) Создаем еще одну строку2.. В цикле сравниваем i-тый элемент из строки1 со всеми остальными в этой строке..
а) если элемент больше не встретился, то добавляем в строку2
б) иначе ничо не делаем
После выхода из цикла определяем длину строки2 и возвращаем это значение..
З.Ы.: В принципе, строку2 можно не создавать а просто добавлять единицу в обнуленную до цикла переменную, если элемент встречается в строке один раз..
Код:
function diffdigits(n:longint):integer;
var m:longint;
i,r:integer;
was:set of 0..9;
begin
i:=0;
was:=[];
m:=n;
while m>0 do
begin
r:=m mod 10;
m:=m div 10;
if not (r in was) then
begin
inc(i);
include(was,i);
end
end;
diffdigits:=i;
end;
var m:longint;
i,r:integer;
was:set of 0..9;
begin
i:=0;
was:=[];
m:=n;
while m>0 do
begin
r:=m mod 10;
m:=m div 10;
if not (r in was) then
begin
inc(i);
include(was,i);
end
end;
diffdigits:=i;
end;