Опять-таки из учебника.
Составить программу подсчета количества различных значащих цифр в десятичной записи натурального числа.
Задача, из раздела о множествах. Потому интересуют решения, только там где операции с множествами.
Вот как у меня получилось:
Цитата:
program raznie_chisla;
uses crt;
var str:string;
mn: set of byte;
j,k:integer;
begin
clrscr;
readln(str);
k:=1;
{убираем незначащие нули из начала строки}
while (Ord(str[k])-Ord('0'))=0 do begin
Delete(str,1,1);
end;
{заносим в множество числа, по одному}
for k:=1 to length(str) do
begin
mn:=mn+[Ord(str[k])-Ord('0')];
end;
j:=0;
for k:=0 to 9 do
begin if k in mn then j:=j+1; end;
writeln(j);
readln;
end.
|
Все работает. Но какой-то уж больно громоздкий способ получился. Можно еще как-то решить задачу с помощью множеств ? Если можно, не код, а сам метод реализации.