![]() |
|
|
![]()
|
|
| 1nd1Go |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 26.5.2007 Репутация: нет Всего: нет |
Здравствуйте! У меня следующая проблема:
Не знаю как мне сделать ввод функции через Edit, сделал временно через функцию (по коду float f() ) (программа для вычисления определенных интегралов), вот собственно и все, ну и код:
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Простым способом врядли получится. Вам нужно разобрать синтаксис введенной строки и построить функцию. Методов разбора много, на этом форуме было очень много обсуждений этого, но код разбора этой строки превысит код всей вашей программы.
Так что подумайте, точно вам это надо. Если хочется для повышения квалификации - тогда можно поэкспериментировать, если в рамках задания - сдал-забыл, то не советую. |
|||
|
||||
| BreakPointMAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Н-да... Еще вчера подумал ответить на вопрос, заданный топикстартером, но решил подождать, что скажут другие (может, что-то новенькое). Ждал зря.
Если нужна теория, то можно почитать это: (http://algolist.manual.ru) Разбор выражений. Компиляторы и интерпретаторы. (http://alglib.sources.ru) Работа с формулами. Если нужна готовая реализация, то можно посмотреть здесь: (вариант 1, http://www.rsdn.ru) Класс TParser. Парсер математических выражений. (вариант 2, http://rxlib.ru) Библиотека RXLib 2.75, класс TRxMathParser Что касается последнего, то...
Вообщем, сначала подключается соответствующий заголовочный файл директивой препроцессора #include, затем объявляется указатель на объект класса TRxMathParser, который впоследствии инициализируется адресом, возвращенным операцией new при динамическом создании объекта данного класса. Класс имеет метод Exec, принимающий параметр типа AnsiString (строка с выражением) и возвращающий результат вычисления(не помню точно) типа float. После использования удаляется операцией delete... Допустимые операторы: + , - , * , / , ^, кроме того в выражении могут быть использованы следующие функции: Cos, Sin, Tan, ArcTan, ArcSin, ArcCos, Abs, Exp, Ln, Log, Sqrt, Sqr, Int, Fraq, Trunc, Round, Sign, Not. Если надо просчитывать значение какой-то функции, то, вероятно, придется формировать строку с фактическим значением параметров, которую в дальнейшем передавать парсеру. -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |