![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
AntonTatu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 12.4.2008 Репутация: нет Всего: нет |
Всем привет !
Можно ли такое сделать (общая схема), если можно то как ?: Имеется массив Mas, в котором записаны формулы в текстовом (строковом) виде: Mas[0] = "j+2 "; Mas[1] = "j*j+2 "; Mas[2] = "j+8 "; Mas[3] = "j*j*2+1 "; Имеется массив Otvet типа int и int j = 2 ; Нужно сделать вот такую штуку: for(int i = 0; i < 4; i++) { Otvet[i] = Mas[i] } т.е. необходимо перед вычислением Otvet[i] подставить в место Mas[i] соответствующую строчку и только потом вычислить Otvet[i], т.е. программа должна "понимать" что при : i = 0 будет считаться Otvet[0] = j+2; i = 1 будет считаться Otvet[1] = j*j+2; i = 2 будет считаться Otvet[2] = j+8; i = 3 будет считаться Otvet[3] = j*j*2+1; КААК такое можно сделать ? |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
ответ - перегрузка функций либо шаблоны функций.
Добавлено через 54 секунды + switch |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Если нужно для конечного небольшого числа вариантов такие формулы, то самое простое решение в массиве Mas хранить указатели на функции, которые вычисляют эти выражения:
Если же набор выражений должен задаваться пользователем, то нужно писать свой парсер, либо использовать уже готовый. Например из скриптового языка Lua, статьи по которому есть на нашем форуме. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
AntonTatu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 12.4.2008 Репутация: нет Всего: нет |
Проблема в том что этих функций может быть от 0 до к примеру 2000 а то и до 200000. 1. Почему описанный способ подойдет только для "конечного небольшого числа вариантов"? Поможет ли такое решение: Функции вычисляются в другой программе и кладутся в файл file.cpp. В результате файл будет содержать какоето расчитанное колличество этих функций (предположим 100) Потом этот файл компилируется в dll и функции используются в основной программе ? 2. Сколько (по времени) занимает операция вызова функции из dll ? Спасибо за ответ !!! |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
1. Потому что в ином случае писать кучу таких маленьких функций нерационально.
2. На уровне машкода столько же, сколько и вызов обычной функции -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 3 Всего: 134 |
считай за 0 ибо всё время будет уходить вот сюда. вызвать сторонний процесс, который создаёт dll, подгрузить dll и заюзать её гораздо дольше чем использовать eval из всяких lua/python'ов/парсеров -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
возможно если ты нормально опишешь зачем это нужно, мы сможем подсказать лучшее решение...
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |