как присвоить переменной индекс?
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как присвоить переменной индекс?

как присвоить переменной индекс?

Ответ
Поиск в этой теме
Непрочитано 23.07.2007, 21:14 #1
как присвоить переменной индекс?
paradoxvaha
 
проектирование противооползневых сооружений
 
Yalta
Регистрация: 06.04.2007
Сообщений: 50

Привет всем! Вот возник такой вопрос - как присвоить переменной индекс?
Тяжело объяснить, легче показать (это кусок тела программы, но суть задачи показал немного ниже):

(if (= n 0) (progn (setq pp0 ver_p)))
(if (= n 1) (progn (setq pp1 ver_p)))
(if (= n 2) (progn (setq pp2 ver_p)))
(if (= n 3) (progn (setq pp3 ver_p)))
(if (= n 4) (progn (setq pp4 ver_p)))
(if (= n 5) (progn (setq pp5 ver_p)))
(if (= n 6) (progn (setq pp6 ver_p)))
(if (= n 7) (progn (setq pp7 ver_p)))
(if (= n 8) (progn (setq pp8 ver_p)))
(if (= n 9) (progn (setq pp9 ver_p)))
я пока выкручивался вот так, но щас пошли такие списки, что капец...
как мне это упростить, помогите плиз.
Нужно что то типа:

(setq n 0)
(repeat 100
(setq p(n) (* n 100))
(setq n (+ n 1))
);end_of_repeat

То есть как бы приклеить индекс n переменной p, чтоб получилась переменная pn, где n - порядковый номер.
Я уже из сил выбился, но ничего не выходит, может кто поможет?
Заранее спасибо!
Просмотров: 3335
 
Непрочитано 23.07.2007, 21:21
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,432


формируй список из своих значений. Примерно так:
Код:
[Выделить все]
(setq n 0)
(repeat 100 (setq lst (append lst (list (setq n (1+ n))))))
Получить элемент в таком варианте можно через nth:
Код:
[Выделить все]
(nth 50 lst); вернет 51-й элемент
Это самый простой способ, есть и посложнее и понавороченнее
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.07.2007, 23:30
#3
paradoxvaha

проектирование противооползневых сооружений
 
Регистрация: 06.04.2007
Yalta
Сообщений: 50
<phrase 1=


Спасибо огромное все будет работать как надо! Немного не то, что я хотел, но так походу даже лучше для меня!! Еще раз спасибо!
paradoxvaha вне форума  
 
Непрочитано 23.07.2007, 23:47
#4
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


В АвтоЛИСПе нет массивов, но если очень надо, то можно их изобразить с помощью списка точечных пар - ((N1 . Value1)(N2 . Value1)(N[n] . Value[n])...). Немного сложнее, чем простоая индексация, но есть и преимущества - не имеет значения порядок следования. N - целые числа. Для доступа - assoc, для замены - subst Контроль уникальности "индекса" на программисте.
Alaspher вне форума  
 
Непрочитано 24.07.2007, 01:49 Re: как присвоить переменной индекс?
#5
BigBrother

Design & programming :)
 
Регистрация: 14.02.2004
Новосибирск
Сообщений: 172
<phrase 1= Отправить сообщение для BigBrother с помощью Skype™


Цитата:
Сообщение от paradoxvaha
...приклеить индекс n переменной p, чтоб получилась переменная pn, где n - порядковый номер.
Я уже из сил выбился, но ничего не выходит, может кто поможет?
Заранее спасибо!
Исходная задача может быть решена так:
(setq n 0)
(repeat 100
(set (read (strcat "p" (itoa n))) (* n 100))
(setq n (+ n 1))
);end_of_repeat

Также подобие массива можно реализовать с помощью фукций Vlisp vlax-safearray-***
BigBrother вне форума  
 
Автор темы   Непрочитано 24.07.2007, 10:44
#6
paradoxvaha

проектирование противооползневых сооружений
 
Регистрация: 06.04.2007
Yalta
Сообщений: 50
<phrase 1=


to BigBrother
Спасибо и тебе, всё работает так, как я и описывал задачу!
Искал ответ на один вопрос, а получил 2 варианта для своей задачи!!!
paradoxvaha вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как присвоить переменной индекс?

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск