Взаимодействия с файлами - 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, чтобы объединить их содержимое в один список. - Возвращает объединенный список.