![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
kosyak |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 100 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброго всем времени суток.
Необходимо написать программу на Lisp. (который в AutoCad). Задача:Написать программу реверсирования всех атомов из подсписков любого уровня. Т.е. если есть список (1 2 3 (4 5 (6 7))), то на выходе получим (((7 6) 5 4) 3 2 1) есть код программы (вроде она, но не работает): Код (defun create_list () (setq l(getstring "Введите список:")) (setq i 1) (setq curr_level -1) (setq high_level -1) (setq str "") (setq str_length(strlen l)) (while (<= i str_length) (setq char(substr l i 1)) (if (= char "(") (setq curr_level(1+ curr_level)) ) (if (= char ")") (setq curr_level(1- curr_level)) ) (if (> curr_level high_level) (setq high_level curr_level) ) (setq i (1+ i)) ) (setq curr_level -1) (setq i 1) (setq result "") (while (<= i str_length) (setq char(substr l i 1)) (if (= char "(") (setq curr_level(1+ curr_level)) ) (if (= char ")") (setq curr_level(1- curr_level)) ) (if (= curr_level high_level) (progn (if (not(= char "(")) (progn (if (not(= char " ")) (progn (setq str(strcat str char)) (if (= (substr l (1+ i) 1) ")") (progn (if (= (listp result) nil) (setq result(list str)) (setq result(cons str result)) ) (setq str "") ) ) ) (progn (if (= (listp result) nil) (setq result(list str)) (setq result(cons str result)) ) (setq str "") ) ) ) ) ) ) (setq i (1+ i)) ) (setq result(reverse result)) (princ (strcat ">>>> Список:")) (setq i 0) (while (not(= (nth i result) nil)) (princ (strcat (nth i result))) (setq i(1+ i)) (if (not(= (nth i result) nil)) (princ (strcat " ")) (print ".") ) ) ) Может это конешно не та программа... я точно не знаю (только начал изучать LISP) Если она, то помогите найти ошибку. А если нет вот такоей вопрос: можно ли список преобразовать в строку (и обратно)? Пожалуйста, помогите разобраться как это надо делать... Заранее всем благодарен |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 23:39 |