![]() |
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) Если она, то помогите найти ошибку. А если нет вот такоей вопрос: можно ли список преобразовать в строку (и обратно)? Пожалуйста, помогите разобраться как это надо делать... Заранее всем благодарен |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
попробуй вот так (пишу здесь, навскидку)
если не пойдет - попробую дома, с автокадом, разбираться. Код (DEFUN REVERSE-1 (X) (COND ((NULL X) NIL) (T (APPEND (REVERSE-1 (CDR X)) (REVERSE-1(LIST(CAR X))))))) -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 7:33 |