Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   арифметика, работа с числами (http://www.flasher.ru/forum/showthread.php?t=80210)

scourge ' kangaroo 24.05.2006 11:14

арифметика, работа с числами
 
Очуень нужна ваша помощь...
есть стринг, содержащий в себе формулу, полученную из инпут текста.. например:
str = "(1 + (2 * 3) / 4) - 5)"
возможно ли вычислить значение этой формулы?
я нашёл только один выход - парсить стринг на символы и вычислять попарно, но это огромный гемор и работает не так как надо...
вот такие пироги.. помогите пожалуйста? (:

Nirth 24.05.2006 11:17

парсить нужно по любому, и по любому нужно отделять числа от спец знаков

scourge ' kangaroo 24.05.2006 11:26

т.е. полюбому придётся разбивать стринг на блоки из скобок, вычислять их отдельно, потом пихать обратно в стринг и т.д.?
и вычислять придётся таким образом:
if(str.charAt(*) == "+")z = x + y
if(str.charAt(*) == "-")z = x - y
?

iNils 24.05.2006 12:22

Не все так просто, надо учитывать приоритет операции.

breez38 24.05.2006 12:34

разбору подобных формул в книге по языку C (Си) была посвящена отдельная глава. Основной принцип в рекурентном вызове функций обработки определеный символов. Точно уже не помню, а коду там было прилично :)
Поищи в инете "синтаксический разбор формул" или что-то в этом роде

scourge ' kangaroo 24.05.2006 13:00

Цитата:

Сообщение от iNils
Не все так просто, надо учитывать приоритет операции.

знаю, в этом вся и загвоздка... я когда реализовывал, мне пришлось двойные скобки обозначать как "{" и "}" типа:
1 + { 1 + ( 1 + 1) - ( 1 - 1 )}

Цитата:

Сообщение от breez38
Поищи в инете "синтаксический разбор формул" или что-то в этом роде

кое-что нашёл, спасибо (:

буду очень благодарен, если подскажите, где найти готовое решение...

iNils 24.05.2006 13:06

Цитата:

Сообщение от scourge ' kangaroo
знаю, в этом вся и загвоздка... я когда реализовывал, мне пришлось двойные скобки обозначать как "{" и "}" типа:
1 + { 1 + ( 1 + 1) - ( 1 - 1 )}

Зачем так сложно?
Ищется открывающая скобка и парная закрывающая.

scourge ' kangaroo 24.05.2006 13:14

сначала так и было, но потом где-то накасячил и результат всегда прибавлял какое-нить число. найти ошибку так и не смог, пришлось менять... :rolleyes:

впринципе, ответ на вопрос "можно ли сделать это одной строчкой кода", я получил. Буду переделывать.

но всё-равно очень хотелось бы посмотреть на способы реализации.


Часовой пояс GMT +4, время: 07:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.