Построить множество символов, встречающихся в строке ровно 2 раза - Turbo Pascal
Формулировка задачи:
Вводится строка. Пройдя по данной строке 1 раз (без вложенных циклов) построить множество символов, встречающихся в ней ровно 2 раза.
Решение задачи: «Построить множество символов, встречающихся в строке ровно 2 раза»
textual
Листинг программы
var
m:set of char;
c:array[char] of byte;
i:integer;
s:string;
begin
write('Enter string>');
readln(s);
m:=[];
for i:=1 to length(s) do begin
inc(c[s[i]]);
if c[s[i]]=2 then Include(m,s[i]) else if c[s[i]]>2 then Exclude(m,s[i]);
end;
write('Set:[');
for i:=0 to 255 do
if chr(i) in m then write(#32+chr(i));
writeln(']');
end.
Объяснение кода листинга программы
- В начале объявляются переменные: m - множество символов, c - массив байтов, i - целое число, s - строка.
- Пользователю предлагается ввести строку.
- Создается пустое множество m.
- Запускается цикл for для каждого символа в строке s.
- На каждой итерации увеличивается значение соответствующего элемента массива c.
- Проверяется, сколько раз текущий символ встречается в строке.
- Если символ встречается ровно 2 раза, то он добавляется в множество m.
- Если символ встречается больше 2 раз, то он исключается из множества m.
- После завершения цикла выводится множество m.
- Выводится сообщение
Set:[с пробелом. - Запускается цикл for для каждого символа в диапазоне от 0 до 255.
- Если текущий символ присутствует в множестве m, то он выводится на экран с помощью функции write, при этом перед ним добавляется пробел.
- Выводится закрывающая скобка
].