Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EVAL как в РНР есть? 
:(
    Опции темы
MCDeveloper
Дата 31.5.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.4.2006

Репутация: нет
Всего: нет



Дано:
 Edit1 - Вводят значение Х
 Edit2 - Вводят математическу строку, пример: 2*x-1
 Жмут кнопку, и в Edit3 написать результат..

советуют парсить, но могут вводить x^2, arcsin, cos, x^e... может есть какие-то компоненты калькулятора?

 
PM MAIL   Вверх
DeadSoul
Дата 31.5.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



Скинь мыло в приват. Отправлю готовый проект под Borland C++ 3.0. Умеет рисовать граффик. Писал правда лет 5 назад..... 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
BreakPointMAN
Дата 31.5.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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 <parsing.hpp>
...
TRxMathParser *MathParser=new TRxMathParser();
AnsiString E="(5+7)*Cos(0)";
float f=MathParser->Exec(E);
ShowMessage("Result: "+FloatToStr(f));
delete MathParser;


Вообщем, сначала подключается соответствующий заголовочный файл директивой препроцессора #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.

Если надо просчитывать значение какой-то функции, то, вероятно, придется формировать строку с фактическим значением параметров, которую в дальнейшем передавать парсеру. 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
DeadSoul
Дата 31.5.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: нет
Всего: 11



BreakPointMAN, ты просто ссылкомет.


MCDeveloper, я умываю руки. Данных ссылок более чем достаточно. 


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
BreakPointMAN
Дата 31.5.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 6
Всего: 24



Цитата(DeadSoul @  31.5.2006,  22:16 Найти цитируемый пост)
BreakPointMAN, ты просто ссылкомет.

Просто сам как-то сталкивался с подобной задачей...  smile  


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
ano360
Дата 9.10.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет




#include <parsing.hpp> 

У меня в ворланд с++ вуилдер 6 такого файла нет. Такое может быть?


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
Guest
Дата 9.10.2006, 23:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Извините чтото ступил.
  Вверх
Guest
Дата 9.10.2006, 23:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Чтото я всёравно не въесжаю. Скачал Библиотека RXLib, только не 275, а поновее, ну это мне кажется несутьважно, а даже лучше.
Читаю Ридменя:
1 Разархивируйте

2 Скопируйте все .bpl файлы из папки bpl - в папку bpl к Билдеру.
   (обычно это папка C:\Program Files\Borland\CBuilder6\Projects\Bpl)
           а все .lib и .bpi файлы из папки lib -  в папку lib к Билдеру.
   (обычно это папка C:\Program Files\Borland\CBuilder6\Projects\Lib)

3 Пропишите в C++Builder6 путь к разархивированной папке ..\RX\units
 (те если вы разархивировали в C:\Program Files\Borland\CBuilder6\RX,
   этот путь будет C:\Program Files\Borland\CBuilder6\RX\units)

4 Инсталируйте эти библиотеки компонент как обычно:
   Вкладка Component->InstallPackages->Add выбираете эти .bpl файлы в папке bpl
    и все ! Работайте...

КАК ПРОПИСАТЬ из пункта 3?Не подскажите?
  Вверх
Vyacheslav
Дата 10.10.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Есть еще вариант.  Использовать Microsoft Script Control. С помощью него подключить скриптовые языки( VBScript, Javascript и т.д на свой выбор) и заставлять их выполнять эти вычисления.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
ano360
Дата 10.10.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



так как всётаки 
Цитата
Пропишите в C++Builder6 путь к разархивированной папке ..\RX\units
?
Никто чтоть не знает?


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
ano360
Дата 10.10.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 22.5.2006
Где: Москва

Репутация: нет
Всего: нет



Ну тогда хоть напишите, что такого нет в borland c++ builder,чтоб я успокоился

Это сообщение отредактировал(а) ano360 - 10.10.2006, 18:57


--------------------
Жизнь есть.
PM MAIL WWW ICQ   Вверх
BreakPointMAN
Дата 10.10.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 6
Всего: 24



Кстати говоря, возможно, ты кривой релиз скачал...  если лил с http://rxlib.ru, ибо есть там такие... У тебя C++ Builder какой версии? Если 6, то скачай rxlib275.zip и rx275pch2.zip... гммм...   smile  вроде правильно линки дал... короче, на http://rxlib.ru/Downl/Downl.htm смотри, если что не получится так напрямик скачать... 

Вот откопал у себя на компе текстовый файлик следующего содержания:
Код
* здесь и далее:
  <BCB6Dir> означает полный путь к папке с установленным Borland C++ Builder 6
       (например, C:\Program Files\Borland\CBuilder6)
  <RxLibDir> означает полный путь к папке с установленным RxLib 2.75
       (например, C:\Program Files\Borland\CBuilder6\RX)

Установка RxLib 2.75 для C++ Builder 6
======================================
1. Извлечь из архива и запустить rxinst.exe
2. В качестве конечной папки для RxLib 2.75 желательно задать C:\Program Files\Borland\CBuilder6\RX
3. Отказаться от добавления каких бы то ни было путей Delphi Search Path.


Установка Patch 2.2 на RXLib 2.75
=================================
1. Распаковать с заменой файлов все файлы из архива в папку <RxLibDir>

2. [Настроить опции в <RxLibDir>\units\rx.inc]

3. Tools => Environment Options... => Library
   в Library Path добавить путь <RxLibDir>\dcu\C6
   в Library Path добавить путь <RxLibDir>\units

4. Project => Options => Directories/Conditionals
   в Include Path добавить путь <RxLibDir>\units

5. Из папки <RxLibDir>\units удалить файлы strutils.*

6. Отключить в среде опцию Use dynamic RTL
   Project => Options... => Linker
   (возможно, лучше также отключить опцию Build with runtime packages
    Project => Options... => Packages
    и установить режим компилятора Release
    Project => Options... => Compiler)

7. По очереди открывать файлы
   rxctl6.bpk, rxdb6.bpk, rxbde6.bpk, dclrxall6.bpk
   из папки <RxLibDir>\units
   и компилировать их: Project => Build

8. Установить пакет
   dclrxall6.bpl
   с помощью Component => Install Packages... => Add...
   из папки <BCB6Dir>\Projects\Bpl


насколько я помню, я делал все по этому файлику + еще пришлось вручную прописывать пути в CBuilder6\Bin\*.cfg-файлах...
Наверное, это слишком большой изврат, но у меня RxLib после этого работал на все 100%... 

И еще... ммм... там не все пакеты надо устанавливать... они двух типов - времени проектирования и времени выполнения... только те, что времени проектирования ставить надо...  вот.


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.