Печать символов из текстового файла - Lisp
Формулировка задачи:
Всех приветству!
Помогите в написании программы на LISP!
В общем само задание:
Сделать программу которая считывает произвольный текст и распечатывает в алфавитном порядке все латинские буквы, входящие в этот текст!
Взываю к помощи, т.к. сам вообще не программирую!(
Решение задачи: «Печать символов из текстового файла»
textual
Листинг программы
(defun task (fname) (let ((res (replicate 0 256))) ;; готовим список для 256 ASCII-кодов (iter (for txt in-file fname) ;; итерация по строкам файла (iter (for a in-string txt) ;; для каждой строки итерация по символам строки (setf (nth (strAsc a) res) 1))) ;; для символа установим 1 в списке res по адресу = ASCII-коду символа (iter (for i from (strAsc "A") to (strAsc "z")) (when (plusp (nth i res)) (prints (strChr i)))))) ;; просто просмтриваем коды латинских букв и печатаем букву, если в res на соотв. месте стоит 1 (т.е. эта буква в файле была)
Объяснение кода листинга программы
В данном коде реализован алгоритм, который выполняет следующие шаги:
- Задание функции
task
, которая принимает один аргументfname
- имя файла. - Создание пустого списка
res
для хранения результатов. - Итерация по каждой строке файла
fname
. - Для каждой строки итерация по каждому символу строки.
- Для каждого символа в списке
res
устанавливается значение 1 в соответствующую позицию, равную ASCII-коду символа. - Итерация по всем ASCII-кодам символов от
A
доz
. - Если значение в списке
res
для текущего ASCII-кода больше 0, то выводится символ с соответствующим ASCII-кодом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д