![]() |
арифметика, работа с числами
Очуень нужна ваша помощь...
есть стринг, содержащий в себе формулу, полученную из инпут текста.. например: str = "(1 + (2 * 3) / 4) - 5)" возможно ли вычислить значение этой формулы? я нашёл только один выход - парсить стринг на символы и вычислять попарно, но это огромный гемор и работает не так как надо... вот такие пироги.. помогите пожалуйста? (: |
парсить нужно по любому, и по любому нужно отделять числа от спец знаков
|
т.е. полюбому придётся разбивать стринг на блоки из скобок, вычислять их отдельно, потом пихать обратно в стринг и т.д.?
и вычислять придётся таким образом: if(str.charAt(*) == "+")z = x + y if(str.charAt(*) == "-")z = x - y ? |
Не все так просто, надо учитывать приоритет операции.
|
разбору подобных формул в книге по языку C (Си) была посвящена отдельная глава. Основной принцип в рекурентном вызове функций обработки определеный символов. Точно уже не помню, а коду там было прилично :)
Поищи в инете "синтаксический разбор формул" или что-то в этом роде |
Цитата:
1 + { 1 + ( 1 + 1) - ( 1 - 1 )} Цитата:
буду очень благодарен, если подскажите, где найти готовое решение... |
Цитата:
Ищется открывающая скобка и парная закрывающая. |
сначала так и было, но потом где-то накасячил и результат всегда прибавлял какое-нить число. найти ошибку так и не смог, пришлось менять... :rolleyes:
впринципе, ответ на вопрос "можно ли сделать это одной строчкой кода", я получил. Буду переделывать. но всё-равно очень хотелось бы посмотреть на способы реализации. |
| Часовой пояс GMT +4, время: 07:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.