Пример 1. Ввести в ЭВМ строку символов. Количество символов в строке (n <40). Вывести встречающиеся в ней символы без повторов и количество этих символов.
Решение задачи сводится к следующему. Каждый символ строки сравнивается со всеми остальными, находящимися после него. Если данный элемент имеет номер i, то следующий – i+1 и т.д., до конца. При этом i изменяется от 1 до n-1. Если в результате сравнения окажется, что анализируемый символ встречается в правой части строки, то он не уникальный. Пока его можно не выводить, он будет выведен потом. Если i-тый элемент не равен ни одному из последующих, то он уникальный и его нужно вывести.
Например для строки 'АВВСА' уникальные символы будут выведены в следующем порядке: ВСА
Этот алгоритм можно представить в следующем виде.
1. Ввести строку символов.
2. n = Длина(строки).
3. Положить Количество_символов =0
4. Для i от 1 до n-1 выполнить
4.1. Положить количество совпадений (k)=0.
4.2. Для j от i+1 до n выполнить
Если символi=символj, то
k=k+1.
4.3. Если k=0, то
а) Количество_символов = Количество_символов +1 и
б) Вывести символi.
5. Вывести Количество_символов.
6. Закончить.
Программа, записанная в соответствии с этим алгоритмом, приведена ниже.
Program Unicum;
var
s : string;
n, i, j, k, kols : integer;
begin
writeln('Введите строку'); {п.1}
readln(s);
n:=length(s); {п.2}
kols:=0; {п.3}
writeln('Символы строки без повторов ');
for i:=1 to n-1 do {начало п.4}
begin
k:=0; {п.4.1}
for j:=i+1 to n do {п.4.2}
if s[i]=s[j] then
k:=k+1;
if k=0 then {п.4.3}
begin
kols:=kols+1;
write(s[i]:2);
end;
end;
writeln('Количество различных символов в строке - ',kols);