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