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