|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
{Конкурс} Lisp. Пребразование в число при возможности
Регистрация: 23.07.2009
Сообщений: 29
|
||
Просмотров: 4441
|
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Поначалу показалось, что нужна выборка только по целым числам.
Код:
![]() Последний раз редактировалось Li6-D, 29.12.2010 в 22:36. Причина: Добавил самокритики |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,363
|
А если так?
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Алексей, насколько я понял у back1981 в исходном списке только строковые константы (наверное какая-то ssget-выборка текстов из чертежа), то есть там числа не встречаются, а только их строковые представления.
В тоже время, в списке может встретиться такой текст "(лом в пилораму)". Как его обработает test? ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,363
|
Li6-D, усовершенствовать можно до бесконечности
![]() Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Кулик Алексей aka kpblc, раз усовершенствовать можно до бесконечности, то предлагаю такой вариант
Код:
Код:
__________________
cadtools |
|||
![]() |
|
||||
И от меня пару вариантов
Код:
Код:
PS строки типа "1e4" не обрабатывает
__________________
Как использовать код на Лиспе читаем здесь |
||||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Код:
__________________
cadtools |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,537
|
|
|||
![]() |
|
||||
Регистрация: 23.07.2009
Сообщений: 29
|
О, сколько вариантов. Может это показаться не эффективным, я создаю на генплане в отдельном слое полилинии условного кабеля для нужд КИПиА. Каждой полилинии я записываю в расширенные данные (поз.1000 DXF) строку формата ("904-1;КВВГЭнг;19;1.5;1"). После прокладки всех кабелей, можно пользоваться этими данными по своему усмотрению, например, для составления кабельных журналов, спецификаций кабеля и т.д. На данный момент я сделал окно для внесения расширенных данных, а также сделал сортировку, по наименованию кабеля, жильности, сечения, этапа строительства. Зная масштаб, возможно определение метража кабеля. Вобщем специфика такая. Кстати, как определят ваши программы строку "904-1" или "123сто двадцать три"?
|
|||
![]() |
|
||||
Цитата:
Код:
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
|
||||
Регистрация: 23.07.2009
Сообщений: 29
|
Забыл добавить, строку вида "904-1;КВВГЭнг;19;1.5;1;" я разбиваю на элементы строки (но это другая история) по признаку знака ";" и скажем элемент типа "904-1" мне нужен именно как строка так, как это маркировка кабеля. Задача стоит такая, если в строке находится элемент отличный от 1234567890 (даже пробел), то однозначно это строка, но вот с вещественными числами тогда проблема ведь есть знак ".". Алгоритм конкретно для моей задачи вижу следующий, каждый элемент проверяю на предмет not (1234567890), если правда, то на предмет наличия знака ".", если правда то надо проверить является ли это строковым отображением вещественного числа, если проверку не проходит, то строка. Если not (1234567890) не правда то это целочисленное число. Тут я смотрю подобные варианты есть. Или мне придется мои данные хранить вот в таком примитивном виде типа "S=904-1;S=КВВГЭ;N=19;F=1.5;N=2;", что скорее всего упростит мне задачу, ведь я явно уже указываю на тип данных. Других задач не преследую, задача стоит именно занести расширенные данные в полилинию и далее уже делать выборки по тем или иным признакам и не больше. За примеры спасибо.
Последний раз редактировалось back1981, 29.12.2010 в 21:01. |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
В рамках поставленной автором задачи написал функцию преобразующую строку из элементов, разделенных знаком ";" в список чисел (если элемент строки является строковым представления числа) и исходных элементов строки (в противном случае).
В качестве разделителя десятичных знаков кроме точки может использоваться запятая (как в Экселе). Примеры преобразований элементов: " - 19 " в 19 - аналогично (atoi " - 19 "); " - 1.5 " или " - 1,5 " в -1.5; ".2" или "+ ,2 " в 0.2; " 3," или "3.000" в 3.0. Не преобразуются: ". 2" - есть пробел между знаками; "7..7" - лишняя точка. "4.23E2", "Pi" - слишком шикарно для кода размером 906 байт ![]() Код:
Последний раз редактировалось Li6-D, 31.12.2010 в 00:50. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
загрузка DOS прог через LISP | Gaa | LISP | 15 | 12.08.2005 19:19 |