Напечатать первые вхождения букв в текст, сохраняя их взаимный порядок - Free Pascal (4)
Формулировка задачи:
Дана строка из строчных латинских букв. Напечатать первые вхождения букв в текст, сохраняя их взаимный порядок.
Указание: формируйте множество, в которое очередной элемент добавляется после первой печати.
Примечание: Программы должны быть написаны в рамках структурного программирования. В частности, запрещается использовать операторы перехода и метки.
Решение задачи: «Напечатать первые вхождения букв в текст, сохраняя их взаимный порядок»
textual
Листинг программы
var s:string;
m:set of char; //само множество
i:byte;
begin
writeln('Введите строку из строчных латинских букв');
readln(s); //ввод строки
m:=[]; //грубо говоря обнуляем множество
writeln('Первые вхождения букв');
for i:=1 to length(s) do //повтор цилка от одного до кол-ва букв в строке
if not(s[i] in m) then //если буквы нет в множестве то
begin
write(s[i]); //вывести её
m:=m+[s[i]]; //и добавить в множество
end;
end.
Объяснение кода листинга программы
- Объявлены переменные: s (строка), m (множество), i (булевый тип).
- Выводится запрос на ввод строки.
- Считывается строка и сохраняется в переменной s.
- Множество m инициализируется пустым значением.
- Выводится сообщение
Первые вхождения букв. - Запускается цикл от 1 до длины строки (длину строки определяет функция length(s)).
- В каждой итерации цикла проверяется, есть ли текущая буква из строки в множестве m с помощью оператора in.
- Если текущая буква не найдена в множестве m, то она выводится на экран с помощью функции write(s[i]).
- После вывода буквы, она добавляется в множество m с помощью оператора
+=, который добавляет элемент в множество и возвращает новое множество. - Цикл завершается, когда все буквы из строки будут проверены.