![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
![]()
Ищу аналог функции eval() PHP.
eval($code); $code=исполняемый код в строковой переменной. Функция выполняет код в переменной $code. Также могу ли я испольщовать функции из php (preg_match и остальные)? |
![]() |
![]() |
![]() |
#2 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
![]()
1. такого в с/с++ не может быть в принципе, т.к это КОМПИЛИРУЕМЫЕ языки, а php - ИНТЕРПРЕТИРУЕМЫЙ.
2. ну чисто теоретически, если знаешь в какой либе лежит эта функция, можно попробовать вызвать динамически эту функцию, но это такой бред сивой кобылы, что я даже не понимаю, зачем я это написал. пс. на c++ решил перейти, или что то совместное php+C++ хочешь сделать? |
![]() |
![]() |
![]() |
#3 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
![]()
vvviperrr
1) Ну так PHP интерпретируется в С вроде... 2) Бред, который пришол мне сразу в голову но я его откинул сразу... + я с длл-ками не игрался еще. ПС. Когда-то писал на С++ перешол на PHP, сейчас надо сделать обратное... Тогда подскажите как сделать такое: Юзер вводит например: Y=sin(X)*X^2+32*X А я уже беру от этого производную и вычисляю Y подставляя некий X? |
![]() |
![]() |
![]() |
#4 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
![]()
2Saniok
1. что в твоем понимании значит интерпретируется? в сях не может быть такой функции по определению. 2. не знаешь функций взятия производных? алгебра, 10 класс (вроде в 10 мы их проходили). я бы распарсил строку на отдельные лексемы, и их бы просчитал по соответствующей функции нахождения производной. это не такая уж и тривиальная задача, как ты считаешь) (судя по вопросу). |
![]() |
![]() |
![]() |
#5 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
![]()
vvviperrr
2) Я то функции знаю, взятие производной это мелочь по сравнению с тем что делается дальше... 3) Пример простенький как разделить на отдельные лексемы то что мне надо сделать? |
![]() |
![]() |
![]() |
#6 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
![]()
ну код я за тебя писать не буду, у самого курсач по теории языков программирования пишется, как раз на ту же тему (синтаксический анализатор). ну как делать. я бы так делал. просматриваешь каждый символ строки. если попалось +, -, /, *, то и действуй в зависимости от выражения. попался + значит берем производную суммы, т.е левое и правое значение от знака. ну и так со всеми. если имеют место быть скобки, задача немного усложняется тем, что сначала надо выполнить действие в скобках. ну вот как то так. конечно, сразу это не сделается, надо посидеть, подумать.
пс. возможно уже есть готовые классы/функции для нахождения производной по заданной формуле, но я не нашел |
![]() |
![]() |
![]() |
#7 |
Символ Добра
Пользователь
Регистрация: 27.09.2007
Сообщений: 22
|
![]()
Класс по нахождению производной давно уже есть, с год назад находил...
Но это не то что мне надо, я это сделаю... Моя проблема в другом, я не знаю как сделать то чтобы юзер вводит допустим sin(2*(x)^2) и x=25, а мне надо подставить вместо х число 25, вычислить синус и вывести на экран... ЗЫ. Sin взял для примера вообще может быть что угодно, даже cosec(ln(arctan(2*sin(x^(52/cos(x)))))... |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 13.10.2008
Сообщений: 17
|
![]()
Прикольно, надо будет сделать.
А на лексемы(блин, слово какое) разбить действительно не пяти минут проблема. Могу подсказать, что когда делают "прочесывание", то создают дерево...короче нужно дерево и precedence table, ну и еще здоровый look-up table для разных математических функций и операций....адназначна, надо будет сделать. |
![]() |
![]() |
![]() |
#9 |
Тупой студент
Форумчанин
Регистрация: 12.05.2007
Сообщений: 614
|
![]()
2Saniok ну можно идти по указателям, от начала строки и до конца, проверяя, не икс ли это. если икс, копируем во временный буфер все, что до Икс, потом твое число. потом идешь дальше, и так, пока все иксы не кончатся. Можно просто заюзать функцию, типа strstr, поиск подстроки в строке, но имхо с указателями удобнее. Естественно, надо убедиться, что больше в выражении иксов лишних не будет (если юзер не будет вводить sinXXX + CosXX, но это тоже преверяется легко).
а вообще, чота бред ты придумал) почему бы юзеру сразу не ввести правильное выражение с подставленным иксом. маткад чтоль свой хочешь сделать |
![]() |
![]() |
![]() |
#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 |