LISP Упорядочивание списков вида ' ((a b) (c d) ... (x y)) - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP Упорядочивание списков вида ' ((a b) (c d) ... (x y))

LISP Упорядочивание списков вида ' ((a b) (c d) ... (x y))

Ответ
Поиск в этой теме
Непрочитано 11.12.2009, 15:08
LISP Упорядочивание списков вида ' ((a b) (c d) ... (x y))
Yurec
 
Регистрация: 11.12.2009
Сообщений: 2

Доброго времени суток уважаемым форумчанам!

Прошу помощи в реализации на LISPе такой задачи:

Есть список вида ' ((a b) (c d) ... (x y)). Значения элементов - целочисленные. Надо упорядочить его по убыванию сначала по первым элементам вложеных списков ( а , c , ..х).
Затем, если в полученном списке есть совпадающие значения первых элементов, упорядочить все подмножества ( с одинаковыми первыми элементами) по убыванию вторых элементов.

Заранее - премного благодарен за любую помощь
Просмотров: 5121
 
Непрочитано 25.05.2011, 14:06
#21
Ubivec81

проектирование железных дорог
 
Регистрация: 12.04.2010
Самара
Сообщений: 60
<phrase 1=


Disney,
Код:
[Выделить все]
 
	(setq start
	       (getint "\nВведите пикет начала кювета - "
	       )
	)
	(while (setq level
	          (getreal (strcat "\nВведите отметку ПК-"
	                   (itoa start)
	                   " :"
	               )
	          )
	       )
	  (setq r     (cons (list start level) r)
	    start (1+ start)
	  )
	)

Можно перевести как это работает! че то я не понимаю.....
Ubivec81 вне форума  
 
Непрочитано 25.05.2011, 19:44
#22
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от Ubivec81 Посмотреть сообщение
Можно перевести как это работает! че то я не понимаю.....
Вот, как мог расписал
Код:
[Выделить все]
 (setq start				     ;В переменную start записываем
       (getint				     ;введённое пользователя целое число
	 "\nВведите пикет начала кювета: "   ;служащее начальным пикетом
       ) ;_ _end_ofgetint
) ;_ _end_ofsetq
(while					     ;Пока
  (setq	level				     ;в переменную level будет записываться 
	 (getreal			     ;введённое пользователем вещественное число
	   (strcat			     ;на запрос собранный из 3 строк в одну:
	     "\nВведите отметку ПК-"	     ;первая строка
	     (itoa start)		     ;преобразовываем целое число(номер пикета) в строку
	     " :"			     ;третья строка
	   ) ;_ end of strcat
	 ) ;_ end of getreal
  ) ;_ end of setq
   (setq r				     ;в переменную r будем записывать
	       (cons			     ;список, полученный путём добавления в качестве первого элемента
		 (list start level)	     ;список, из двух элементов: 1-ый - номер пикета, 2-ой - отметка
		 r			     ;к ранее сформированному списку 
	       ) ;_ end of cons
	 start				     ;в переменную start записываем
	       (1+ start)		     ;номер следующего пикета
   ) ;_ end of setq
) ;_ end of while
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 26.05.2011, 07:45
#23
Ubivec81

проектирование железных дорог
 
Регистрация: 12.04.2010
Самара
Сообщений: 60
<phrase 1=


Disney, Еще раз спасибо! Такое решение я бы сам наверна не скоро додумал.... Вот только в нем не получится наверное если пикет будет не целый. Хотя я еще поразбираю это все!
Ubivec81 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP Упорядочивание списков вида ' ((a b) (c d) ... (x y))



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск Lisp команды в новом документе BlackHarp LISP 1 26.03.2009 23:06
АА2008 Перенос вида на лист xag Вертикальные решения на базе AutoCAD 7 12.11.2008 11:47
LISP на _purge Малюк LISP 12 23.12.2007 18:15
Подшивки,блок идентификатор,марка вида wtl® AutoCAD 5 18.10.2006 23:20
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19