Чтение из файла - Lisp
Формулировка задачи:
Имеется следующая функция для возведения в степень.
Пытаюсь считать из файла с 1 строки число, со 2стр. степень. В ответ получаю keyword value missing. Ошибка подозреваю нубская , буду рад помощи и пояснениям
(defun proba (x n) (cond ((= n 0) 1) (t (* x (proba x (- n 1))))) )
(defun read() (progn (setq ins (open "C:/LISP/input.txt" :direction:input)) (setq x (read-line ins)) (setq n (read ins)) (close ins) (proba x n) ) )
Решение задачи: «Чтение из файла»
textual
Листинг программы
(defun foo (path) (with-open-file (i path :direction :input) (let ((x (parse-integer (read-line in))) (n (parse-integer (read-line in)))) (proba x n))))
Объяснение кода листинга программы
В данном коде определен пользовательский функтор с именем foo. Он принимает один аргумент — путь к файлу. Внутри функтора используется комбинация конструкций с открытием файла и чтения из него. Вот список действий, которые происходят в этом коде:
- Открытие файла с указанным путем для чтения.
- Чтение первой строки из файла и преобразование ее в целое число, которое сохраняется в переменной x.
- Чтение второй строки из файла и преобразование ее в целое число, которое сохраняется в переменной n.
- Вычисление значения выражения x/n и сохранение его в переменной proba.
- Возврат значения переменной proba из функтора. Используется вспомогательная функция parse-integer, которая преобразует строку в целое число. Также используется комбинация конструкций с чтением из файла (read-line) и цикла let для создания локальных переменных x и n.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д