Взаимодействия с файлами - Lisp
Формулировка задачи:
И снова здравствуйте! И снова я прошу помощи на канун Нового Года.
Написать программу, вводящую данные из файла, содержащего n строк по шесть чисел, таким образом, что содержание нечётных строк присваивается элементам массива А, чётных строк – элементам массива В. Вывести эти значения на экран
Буду очень признателен, тем кто поможет.
Решение задачи: «Взаимодействия с файлами»
textual
Листинг программы
(defun task (fnam) (let ((fi (gensym 'fi)) (a nil) (b nil)) (filOpen fi fnam _INPUT) (loop (when (filEOF fi) (return t)) (push (input (strCat "(" (filGetLine fi) ")")) a) (push (input (strCat "(" (filGetLine fi) ")")) b)) (filClose fi) (list (apply 'append (reverse a)) (apply 'append (reverse b)))))
Объяснение кода листинга программы
В данном коде реализована функция task
, которая выполняет следующие действия:
- Создает две пустые переменные:
a
иb
. - Создает уникальное имя файла с помощью функции
gensym
и сохраняет его в переменнуюfi
. - Открывает файл с помощью функции
filOpen
и сохраняет результат в переменнуюfi
. - В цикле
loop
считывает строки из файла с помощью функцииfilGetLine
и добавляет их в переменныеa
иb
с помощью функцииpush
. - Закрывает файл с помощью функции
filClose
. - Считывает содержимое переменных
a
иb
, преобразует их в строки с помощью функцииinput
. - Преобразует строки в символы списков с помощью функции
strCat
. - Применяет функцию
append
к переменнымa
иb
, чтобы объединить их содержимое в один список. - Возвращает объединенный список.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д