|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|||||||||||
Создание формул по шаблону03.10.2014, 15:52. Показов 925. Ответов 5
Метки нет (Все метки)
Доброго времени суток, форумчане!
Столкнулся с некой проблемой при реализации одной задачи. Ну пожалуй с задачи и начну: В общем суть очень проста - порой по работе необходимо заниматься написание формул на ПО SCADA системы. Логика формул чаще всего простейшая, например: IF(N1861>(0.9*N11159) OR N1857>(0.9*N11160) OR N1861>(0.9*ТИ14482),1,0) Где "N" это некая переменная, которая берется из БД. Дело в том, что даже при такой просто логике в формуле должно быть около 300-400 параметров. Из за монотонности работы решил написать некий создатель формул по шаблону, но не хватает фантазии что ли чтобы придумать некую гибкую форму, в которой можно будет эти шаблоны создавать без применения изменений в коде. Допустим сейчас для конкретно этой формулы в 300 параметров сделано так....есть некий файл TXT в котром с каждой новой строки написано число (Номер нашей переменной N), ну и потом: Гружу
Прошу просто подсказать, как можно это реализовать, приветствуется любая помощь!
0
|
|||||||||||
| 03.10.2014, 15:52 | |
|
Ответы с готовыми решениями:
5
Создание функции для работы со стеками по шаблону
|
|
504 / 247 / 75
Регистрация: 31.10.2010
Сообщений: 747
|
||||||
| 04.10.2014, 12:29 | ||||||
|
Для таких целей лучше воспользоваться Excel, Statistica или Matlab.
Сохранить возможно так:
но вероятно вам надо не только сохранять но и иметь уникальный признак для выбора шаблона. В качестве такого признака обычно используют контрольные коды (например, MD5), но если это слишком сложно, то надо смотреть в сторону идентификации, например по сумме переменных N (могут ли они повторяться?), или по имени файла в котором хранятся переменные N (могут ли повторяться эти имена или различаться для одинаковых наборов N).
0
|
||||||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|||||||||||
| 07.10.2014, 10:47 [ТС] | |||||||||||
|
еще раз объясню идею:
Допустим мне необходимо создать такую формулу IF(N1>(0.9*N2) OR N3>(0.9*N4) OR N5>(0.9*N6),1,0) (помним что это пример в оригинале таких параметров N около 300+) хотелось бы просто написать шаблон, для этой формулы он будет выглядеть вот так: IF( #1>(0.9*#2) OR ,1,0) при этом в отдельном поле я говорю что - #1>(0.9*#2) OR - часть которая повторяется. вот как и чем реализовать парсер который будет при виде шаблона и повторяющейся части делать что то вроде этого: A - начало A="IF(" B - промежуточное значение 1 B=">(0.9*" C - промежуточное значение 2 C=") OR " D - конец D=",1,0)" n - счетчик n=0 SL - StringList с переменными Формируем часть которая повторяется.
Заранее извиняюсь за пример, писал его на коленке.
0
|
|||||||||||
|
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
|
||||||
| 07.10.2014, 14:47 | ||||||
|
Обычная строка с подстановочными символами
Если открывающая скобка встретилась, найти закрывающую и колво повторов При этом исходная строка выглядит так: #A{N#n#BN#n#C}5 и делаем подмены #A #B #C как ты написал #n - текущий индекс
0
|
||||||
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
| 07.10.2014, 15:02 [ТС] | |
|
Спасибо большое что обратили внимание, но я не уверен что такой подход будет гибок.
масок будет много и хотелось бы обходиться без "редактирования кода" при обнаружении в маске нового сочетания символов. Но как вариант использовать Ваш вариант подмен при супер грамотном парсинге.
0
|
|
|
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
|
|
| 07.10.2014, 15:39 | |
|
Здесь идея именно в обработке повторяемой части стоки-шаблона через указание скобок
И реализация напрашивается рекурсивная. А реализовывать ли прямую подмену A B C D - это уже по месту видно будет.
0
|
|
| 07.10.2014, 15:39 | |
|
Помогаю со студенческими работами здесь
6
Создание Локальных Пользователей по шаблону Создание документа Word по шаблону Создание списка элементов по шаблону
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|