Печать символов из текстового файла - 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 (т.е. эта буква в файле была)

Объяснение кода листинга программы

В данном коде реализован алгоритм, который выполняет следующие шаги:

  1. Задание функции task, которая принимает один аргумент fname - имя файла.
  2. Создание пустого списка res для хранения результатов.
  3. Итерация по каждой строке файла fname.
  4. Для каждой строки итерация по каждому символу строки.
  5. Для каждого символа в списке res устанавливается значение 1 в соответствующую позицию, равную ASCII-коду символа.
  6. Итерация по всем ASCII-кодам символов от A до z.
  7. Если значение в списке res для текущего ASCII-кода больше 0, то выводится символ с соответствующим ASCII-кодом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5