> 1 <

Автор Сообщение

evgosyan

Members


Статус

1 сообщений

Где: ---
Род занятий:
Возраст:

#756   2009-12-06 15:03 GMT+3 часа(ов)      
Добрый день. Если есть возможность, то прошу у вас помощи вот с чем. Существует такой код:
 
(setq a1 (list 'On 'Select_Prog 'Spec_Prog 'Cardio_Prog 'Max_Time 'F1))
(setq a2 (list 'On 'Select_Prog 'Spec_Prog 'Cardio_Prog 'Age 'F2))
(setq a3 (list 'On 'Select_Prog 'Spec_Prog 'Cardio_Prog 'Spec_Prog 'Start 'F3))
(setq a4 (list 'On 'Select_Prog 'Spec_Prog 'Cardio_Prog 'Spec_Prog 'Normal 'F4))
(setq a5 (list 'On 'Select_Prog 'Spec_Prog 'Cardio_Prog 'Spec_Prog 'Prof 'F5))
(setq a6 (list 'On 'Select_Prog 'Spec_Prog 'FatBurn_Prog 'Cnt_Weight 'F6))
(setq a7 (list 'On 'Select_Prog 'Spec_Prog 'FatBurn_Prog 'Spec_Prog 'Start 'F7))
(setq a8 (list 'On 'Select_Prog 'Spec_Prog 'FatBurn_Prog 'Spec_Prog 'Normal 'F8))
(setq a9 (list 'On 'Select_Prog 'Spec_Prog 'FatBurn_Prog 'Spec_Prog 'Prof 'F9))
(setq a10 (list 'On 'Select_Prog 'Free_Prog 'Max_Time 'F10))
(setq a11 (list 'On 'Select_Prog 'Free_Prog 'Cnt_K 'F11))
(setq alph (list a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11))
 
 
(defun avt (&rest a) (cond
((null a) (do ((d -1))((= d 10))(setq d(+ d 1)) (print (nth d alph)) ))
 
((= (length a) 1)
(do ((d -1))((= d 10))(setq d(+ d 1))(
if (equal (first a) (first(nth d alph))) (print (nth d alph))) ))
 
((= (length a) 2)
(do ((d -1))((= d 10))(setq d(+ d 1))(
if (equal a (list (first(nth d alph))(second(nth d alph)) )) (print (nth d alph))) ))
 
((= (length a) 3)
(do ((d -1))((= d 10))(setq d(+ d 1))
(if (equal a (nth d alph) ) (return (nth d alph))
(if (equal a (list (first(nth d alph))(second(nth d alph))(third(nth d alph)) )) (print (nth d alph))) ))
)
((= (length a) 4)
(do ((d -1))((= d 10))(setq d(+ d 1))
(if (equal a (nth d alph) ) (return (nth d alph))
(if (equal a (list (first(nth d alph))(second(nth d alph))(third(nth d alph)) (fourth(nth d alph)) )) (print (nth d alph))) ))
)
 
((= (length a) 5)
(do ((d -1))((= d 10))(setq d(+ d 1))
(if (equal a (nth d alph) ) (return (nth d alph))
(if (equal a (list (first(nth d alph))(second(nth d alph))(third(nth d alph)) (fourth(nth d alph)) (fifth(nth d alph)) )) (print (nth d alph))) ))
)
 
((= (length a) 6)
(do ((d -1))((= d 10))(setq d(+ d 1))
(if (equal a (nth d alph) ) (return (nth d alph))
(if (equal a (list (first(nth d alph))(second(nth d alph))(third(nth d alph)) (fourth(nth d alph)) (fifth(nth d alph)) (sixth(nth d alph)) )) (print (nth d alph))) ))
)
 
((= (length a) 7)
(do ((d -1))((= d 10))(setq d(+ d 1))
(if (equal a (nth d alph) ) (return (nth d alph))
(if (equal a (list (first(nth d alph))(second(nth d alph))(third(nth d alph)) (fourth(nth d alph)) (fifth(nth d alph)) (sixth(nth d alph)) (seventh(nth d alph)) )) (print (nth d alph))) ))
)))
 

При выполнении функции (avt) выводится список всех процессов работы автомата.
При выполнении такого запроса (avt 'ON 'SELECT_PROG 'FREE_PROG 'CNT_K)
результатом является: (ON SELECT_PROG FREE_PROG CNT_K F11) NIL
Возможно ли записать данный результат через setq в переменную? Я пробую, но у меня записывается только NIL.
В чем может быть причина и куда мне "копать"?

>(setq q(avt 'ON 'SELECT_PROG 'FREE_PROG 'CNT_K))
(ON SELECT_PROG FREE_PROG CNT_K F11) NIL
>q
NIL

gihar

Moderators


Статус

249 сообщений

Где: --- да вот он я? приехал уже из Катманду
Род занятий: конкретный
Возраст: 0

#760   2009-12-15 01:47 GMT+3 часа(ов)      
вообщем надо возврат переменной "a" оформить , а то рано return делаешь

Это было точно последнее редактирование
> 1 <


Онлайн :

0 пользователь(ей), 13 гость(ей) :




Реклама на сайте: