![]() |
|
||||||||||
|
|||||
|
[1.3 07.09.2006]
[3 28.09.2006] [+1 04.10.2006] |
Очуень нужна ваша помощь...
есть стринг, содержащий в себе формулу, полученную из инпут текста.. например: str = "(1 + (2 * 3) / 4) - 5)" возможно ли вычислить значение этой формулы? я нашёл только один выход - парсить стринг на символы и вычислять попарно, но это огромный гемор и работает не так как надо... вот такие пироги.. помогите пожалуйста? (: |
|
|||||
|
[1.3 07.09.2006]
[3 28.09.2006] [+1 04.10.2006] |
т.е. полюбому придётся разбивать стринг на блоки из скобок, вычислять их отдельно, потом пихать обратно в стринг и т.д.?
и вычислять придётся таким образом: if(str.charAt(*) == "+")z = x + y if(str.charAt(*) == "-")z = x - y ? |
|
|||||
|
разбору подобных формул в книге по языку C (Си) была посвящена отдельная глава. Основной принцип в рекурентном вызове функций обработки определеный символов. Точно уже не помню, а коду там было прилично
![]() Поищи в инете "синтаксический разбор формул" или что-то в этом роде
__________________
Никогда не может быть так плохо, чтоб не могло быть еще хуже! |
|
|||||
|
[1.3 07.09.2006]
[3 28.09.2006] [+1 04.10.2006] |
Цитата:
1 + { 1 + ( 1 + 1) - ( 1 - 1 )} Цитата:
буду очень благодарен, если подскажите, где найти готовое решение... |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
Ищется открывающая скобка и парная закрывающая. |
|
|||||
|
[1.3 07.09.2006]
[3 28.09.2006] [+1 04.10.2006] |
сначала так и было, но потом где-то накасячил и результат всегда прибавлял какое-нить число. найти ошибку так и не смог, пришлось менять...
впринципе, ответ на вопрос "можно ли сделать это одной строчкой кода", я получил. Буду переделывать. но всё-равно очень хотелось бы посмотреть на способы реализации. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|