|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.11.2008, 23:01 | #1 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
C++ && eval() in PHP
Ищу аналог функции eval() PHP.
eval($code); $code=исполняемый код в строковой переменной. Функция выполняет код в переменной $code. Также могу ли я испольщовать функции из php (preg_match и остальные)? |
03.11.2008, 00:32 | #2 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
1. такого в с/с++ не может быть в принципе, т.к это КОМПИЛИРУЕМЫЕ языки, а php - ИНТЕРПРЕТИРУЕМЫЙ.
2. ну чисто теоретически, если знаешь в какой либе лежит эта функция, можно попробовать вызвать динамически эту функцию, но это такой бред сивой кобылы, что я даже не понимаю, зачем я это написал. пс. на c++ решил перейти, или что то совместное php+C++ хочешь сделать? |
04.11.2008, 03:32 | #3 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
vvviperrr
1) Ну так PHP интерпретируется в С вроде... 2) Бред, который пришол мне сразу в голову но я его откинул сразу... + я с длл-ками не игрался еще. ПС. Когда-то писал на С++ перешол на PHP, сейчас надо сделать обратное... Тогда подскажите как сделать такое: Юзер вводит например: Y=sin(X)*X^2+32*X А я уже беру от этого производную и вычисляю Y подставляя некий X? |
04.11.2008, 04:01 | #4 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
2Saniok
1. что в твоем понимании значит интерпретируется? в сях не может быть такой функции по определению. 2. не знаешь функций взятия производных? алгебра, 10 класс (вроде в 10 мы их проходили). я бы распарсил строку на отдельные лексемы, и их бы просчитал по соответствующей функции нахождения производной. это не такая уж и тривиальная задача, как ты считаешь) (судя по вопросу). |
04.11.2008, 16:40 | #5 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
vvviperrr
2) Я то функции знаю, взятие производной это мелочь по сравнению с тем что делается дальше... 3) Пример простенький как разделить на отдельные лексемы то что мне надо сделать? |
04.11.2008, 19:58 | #6 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
ну код я за тебя писать не буду, у самого курсач по теории языков программирования пишется, как раз на ту же тему (синтаксический анализатор). ну как делать. я бы так делал. просматриваешь каждый символ строки. если попалось +, -, /, *, то и действуй в зависимости от выражения. попался + значит берем производную суммы, т.е левое и правое значение от знака. ну и так со всеми. если имеют место быть скобки, задача немного усложняется тем, что сначала надо выполнить действие в скобках. ну вот как то так. конечно, сразу это не сделается, надо посидеть, подумать.
пс. возможно уже есть готовые классы/функции для нахождения производной по заданной формуле, но я не нашел |
05.11.2008, 14:14 | #7 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
Класс по нахождению производной давно уже есть, с год назад находил...
Но это не то что мне надо, я это сделаю... Моя проблема в другом, я не знаю как сделать то чтобы юзер вводит допустим sin(2*(x)^2) и x=25, а мне надо подставить вместо х число 25, вычислить синус и вывести на экран... ЗЫ. Sin взял для примера вообще может быть что угодно, даже cosec(ln(arctan(2*sin(x^(52/cos(x)))))... |
05.11.2008, 14:48 | #8 |
Пользователь
Регистрация: 13.10.2008
Сообщений: 17
|
Прикольно, надо будет сделать.
А на лексемы(блин, слово какое) разбить действительно не пяти минут проблема. Могу подсказать, что когда делают "прочесывание", то создают дерево...короче нужно дерево и precedence table, ну и еще здоровый look-up table для разных математических функций и операций....адназначна, надо будет сделать. |
05.11.2008, 15:50 | #9 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
2Saniok ну можно идти по указателям, от начала строки и до конца, проверяя, не икс ли это. если икс, копируем во временный буфер все, что до Икс, потом твое число. потом идешь дальше, и так, пока все иксы не кончатся. Можно просто заюзать функцию, типа strstr, поиск подстроки в строке, но имхо с указателями удобнее. Естественно, надо убедиться, что больше в выражении иксов лишних не будет (если юзер не будет вводить sinXXX + CosXX, но это тоже преверяется легко).
а вообще, чота бред ты придумал) почему бы юзеру сразу не ввести правильное выражение с подставленным иксом. маткад чтоль свой хочешь сделать |
05.11.2008, 16:32 | #10 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
2vvviperrr
Опять меня не понял.. )) Суть моей проблемы не в том что бы определить где Х, а в том что мне надо будет потом посчитать sin | cos | ... а как? Так знаю... Код:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
PHP & Excel | LeoN | PHP | 2 | 02.09.2008 13:37 |
Проблема с MVC++ 2005 && 2008 на висте | NetGod | Софт | 1 | 09.08.2008 17:14 |
Delphi & Access & Ole | vodila | БД в Delphi | 0 | 15.07.2008 11:11 |
mysql & php | kkkggg | PHP | 1 | 08.08.2007 19:55 |