Напечатать все буквы входящие в текст по одному разу - Pascal
Формулировка задачи:
Прошу помоч. Очень надо.
Дан текст из строчных латинских букв, за которыми следует точка.
Напечатать все буквы входящие в текст по одному разу.
Решение задачи: «Напечатать все буквы входящие в текст по одному разу»
textual
Листинг программы
var c:char; s,sd:set of char; begin s:=[ ]; {инициализация множества входных символов} sd:=[ ]; {инициализация множества повторяющихся символов} repeat read(c); if c in s then sd:=sd+[c] {накопление множества повторяющихся символов} else s:=s+[c]; {накопление множества всех символов} until c='.'; s:=s-sd-['.']; {получение множества неповторяющихся символов} for c:=#33 to #255 do if (c in s) then write(c:3); end.
Объяснение кода листинга программы
- Объявление переменных:
c
- символьная переменная для считывания символов.s
- множество всех уникальных символов.sd
- множество повторяющихся символов.
- Инициализация множеств:
s
иsd
инициализируются пустыми множествами.
- Цикл считывания символов:
- В цикле считываются символы из входного потока и проверяется, содержится ли символ
c
в множествеs
(всех уникальных символов).
- В цикле считываются символы из входного потока и проверяется, содержится ли символ
- Обновление множеств:
- Если символ
c
уже есть в множествеs
, он добавляется в множествоsd
(повторяющиеся символы). - Иначе, символ
c
добавляется в множествоs
.
- Если символ
- Завершение цикла:
- Цикл прерывается, когда считывается символ
.
.
- Цикл прерывается, когда считывается символ
- Фильтрация неповторяющихся символов:
- Из множества
s
удаляются символы, содержащиеся и в множествеsd
и символ.
.
- Из множества
- Цикл для печати уникальных символов:
- Происходит перебор символов от #33 до #255.
- Если символ содержится в множестве
s
, то он выводится на печать, выравниваясь по ширине 3 символа.
- Конец программы:
- Завершение выполнения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д