![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Shuma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 15.5.2007 Где: Беларусь, Гомель Репутация: нет Всего: 2 |
Привет.
Народ посоветуйте плиз подход для решения: Нужен калькулятор который получает на вход выражение в виде строки(вводит пользователь) и собственно вычисляет. В выражении могут быть цифры с дробной частью,+-*/,и любая степень вложенности скобок. Собственно прошу посоветовать какими средствами лучше пользоватся может с небольшими примерами. Думал разделить строку на 2 массива: первый для числовой части, второй для операций...все бы хорошо но вроде с вложенными скобками будут проблемы... Спасибо. |
|||
|
||||
man_without_face |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 1.4.2008 Репутация: нет Всего: 1 |
а не проще распарсить строку с выражением? при обнаружении например "+" - складываешь число перед ним. ну и т.д. Только про скобки не забывать.
|
|||
|
||||
Shuma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 15.5.2007 Где: Беларусь, Гомель Репутация: нет Всего: 2 |
Пример плиз если можно...я в джаве ньюбл.
|
|||
|
||||
SoulKeeper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: 11 Всего: 15 |
|
|||
|
||||
Shuma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 15.5.2007 Где: Беларусь, Гомель Репутация: нет Всего: 2 |
Спасибо большое, правда думал свое написать а не скрипт готовый...хотя зачем изобретать велосипед.
Спасибо еще раз. |
|||
|
||||
Zlatogorov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 18.12.2007 Где: BW,Stuttgart Репутация: нет Всего: 1 |
Shuma,
Обратите внимание на ANTLR. Там можно написать парсер обрабатывающий выражения типа: x=3 y=5 z=2 x+y*z |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 3 Всего: 11 |
Задача не так тривиальна, как кажется на первый взгляд, сам когда-то сталкивался с этой задачей. Почитай "Полный справочник по C#" Шилдта, там в конце книги описано пример - синтаксический анализ методом рекурсивного спуска, как раз то, что надо.
|
|||
|
||||
brejnev |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 18.9.2005 Репутация: нет Всего: нет |
У нас в универе такая лаба была. Решение - набрать в гугле "обратная польская нотация". И еще есть куча алгоритмов, ищется тож в гугле по фразе "синтаксический разбор выражений" или что-то типо того.
|
|||
|
||||
SoulKeeper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: 11 Всего: 15 |
Велосипедисты
![]() |
|||
|
||||
Shuma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 15.5.2007 Где: Беларусь, Гомель Репутация: нет Всего: 2 |
Спасиб народ.
|
|||
|
||||
Shuma |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 15.5.2007 Где: Беларусь, Гомель Репутация: нет Всего: 2 |
Собственно вот мое решение без использования скрипта(для велосипедистов или если дана установка " писать свое"),надеюсь кому-нить пригодится...если кто найдет баг сообщите плиз. Решение несколько топорное, можно и увеличить скорость и сжать размер(но надо ли это для такой задачи?), да и алгоритм не самый лучший наверно.
Это сообщение отредактировал(а) Shuma - 13.5.2008, 07:08 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |