Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2008, 23:01   #1
Saniok
Символ Добра
Пользователь
 
Аватар для Saniok
 
Регистрация: 27.09.2007
Сообщений: 22
По умолчанию C++ && eval() in PHP

Ищу аналог функции eval() PHP.
eval($code);

$code=исполняемый код в строковой переменной.
Функция выполняет код в переменной $code.

Также могу ли я испольщовать функции из php (preg_match и остальные)?
Saniok вне форума Ответить с цитированием
Старый 03.11.2008, 00:32   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

1. такого в с/с++ не может быть в принципе, т.к это КОМПИЛИРУЕМЫЕ языки, а php - ИНТЕРПРЕТИРУЕМЫЙ.
2. ну чисто теоретически, если знаешь в какой либе лежит эта функция, можно попробовать вызвать динамически эту функцию, но это такой бред сивой кобылы, что я даже не понимаю, зачем я это написал.

пс. на c++ решил перейти, или что то совместное php+C++ хочешь сделать?
vvviperrr вне форума Ответить с цитированием
Старый 04.11.2008, 03:32   #3
Saniok
Символ Добра
Пользователь
 
Аватар для Saniok
 
Регистрация: 27.09.2007
Сообщений: 22
По умолчанию

vvviperrr
1) Ну так PHP интерпретируется в С вроде...
2) Бред, который пришол мне сразу в голову но я его откинул сразу... + я с длл-ками не игрался еще.

ПС. Когда-то писал на С++ перешол на PHP, сейчас надо сделать обратное...

Тогда подскажите как сделать такое:
Юзер вводит например:
Y=sin(X)*X^2+32*X
А я уже беру от этого производную и вычисляю Y подставляя некий X?
Saniok вне форума Ответить с цитированием
Старый 04.11.2008, 04:01   #4
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Saniok
1. что в твоем понимании значит интерпретируется? в сях не может быть такой функции по определению.
2. не знаешь функций взятия производных? алгебра, 10 класс (вроде в 10 мы их проходили). я бы распарсил строку на отдельные лексемы, и их бы просчитал по соответствующей функции нахождения производной. это не такая уж и тривиальная задача, как ты считаешь) (судя по вопросу).
vvviperrr вне форума Ответить с цитированием
Старый 04.11.2008, 16:40   #5
Saniok
Символ Добра
Пользователь
 
Аватар для Saniok
 
Регистрация: 27.09.2007
Сообщений: 22
По умолчанию

vvviperrr
2) Я то функции знаю, взятие производной это мелочь по сравнению с тем что делается дальше...
3) Пример простенький как разделить на отдельные лексемы то что мне надо сделать?
Saniok вне форума Ответить с цитированием
Старый 04.11.2008, 19:58   #6
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

ну код я за тебя писать не буду, у самого курсач по теории языков программирования пишется, как раз на ту же тему (синтаксический анализатор). ну как делать. я бы так делал. просматриваешь каждый символ строки. если попалось +, -, /, *, то и действуй в зависимости от выражения. попался + значит берем производную суммы, т.е левое и правое значение от знака. ну и так со всеми. если имеют место быть скобки, задача немного усложняется тем, что сначала надо выполнить действие в скобках. ну вот как то так. конечно, сразу это не сделается, надо посидеть, подумать.
пс. возможно уже есть готовые классы/функции для нахождения производной по заданной формуле, но я не нашел
vvviperrr вне форума Ответить с цитированием
Старый 05.11.2008, 14:14   #7
Saniok
Символ Добра
Пользователь
 
Аватар для Saniok
 
Регистрация: 27.09.2007
Сообщений: 22
По умолчанию

Класс по нахождению производной давно уже есть, с год назад находил...
Но это не то что мне надо, я это сделаю... Моя проблема в другом, я не знаю как сделать то чтобы юзер вводит допустим sin(2*(x)^2) и x=25, а мне надо подставить вместо х число 25, вычислить синус и вывести на экран...
ЗЫ. Sin взял для примера вообще может быть что угодно, даже cosec(ln(arctan(2*sin(x^(52/cos(x)))))...
Saniok вне форума Ответить с цитированием
Старый 05.11.2008, 14:48   #8
Vladko
Пользователь
 
Регистрация: 13.10.2008
Сообщений: 17
По умолчанию

Прикольно, надо будет сделать.

А на лексемы(блин, слово какое) разбить действительно не пяти минут проблема. Могу подсказать, что когда делают "прочесывание", то создают дерево...короче нужно дерево и precedence table, ну и еще здоровый look-up table для разных математических функций и операций....адназначна, надо будет сделать.
Vladko вне форума Ответить с цитированием
Старый 05.11.2008, 15:50   #9
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Saniok ну можно идти по указателям, от начала строки и до конца, проверяя, не икс ли это. если икс, копируем во временный буфер все, что до Икс, потом твое число. потом идешь дальше, и так, пока все иксы не кончатся. Можно просто заюзать функцию, типа strstr, поиск подстроки в строке, но имхо с указателями удобнее. Естественно, надо убедиться, что больше в выражении иксов лишних не будет (если юзер не будет вводить sinXXX + CosXX, но это тоже преверяется легко).

а вообще, чота бред ты придумал) почему бы юзеру сразу не ввести правильное выражение с подставленным иксом. маткад чтоль свой хочешь сделать
vvviperrr вне форума Ответить с цитированием
Старый 05.11.2008, 16:32   #10
Saniok
Символ Добра
Пользователь
 
Аватар для Saniok
 
Регистрация: 27.09.2007
Сообщений: 22
По умолчанию

2vvviperrr
Опять меня не понял.. ))
Суть моей проблемы не в том что бы определить где Х, а в том что мне надо будет потом посчитать sin | cos | ... а как?
Так знаю...
Код:
int x=25;
double y;
...
y=sin(x)*25*cos(x);
cout<<y<<endl;
А вот так нет...
Код:
int x;
double y;
string f;
cout<<"Введите функцию"<<endl;
cin>>f; //Юзер вводит функцию sin(x)*25*cos(x)
...
y=f; // БРЕД!!! А мне надо выполнить sin && cos
cout<<y<<endl;
Saniok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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