Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С какой стороны подойти к задаче? 
:(
    Опции темы
IUser
Дата 24.8.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



 Пдскажите как решить следующую задачу?
1.    Калькулятор.  Написать консольное приложение, выполняющее простые арифметические действия и функции.

Приложение читает выражения со стандартного входного потока и выводит значение выражения в стандартный выходной поток. 
Выражения могут содержать целые и дробные числа, скобки, унарные (‘+’, ‘-‘) и бинарные (‘+’, ‘-‘, ‘*’, ‘/’) операторы и функции (напр. abs(), pow() – степень). Функции могут принимать определенное число аргументов: 1 (например sin(x)), 2 (например pow(x, y) и т.д. Некоторые функции допускают любое число аргументов (напр. max(1, 2), max(1, 2, 3, 4, 5)).
Функции, которые должны быть реализованы:
abs(x) – абсолютная величина
sqrt(x) – квадратный корень
min(x,y,…), max(x,y,…) – минимум и максимум из двух или более аргументов
round(x) – округление
pow(x,y) – x в степени y
        
Приложение должно уметь работать с любыми функциями из списка, корректно обрабатывая неправильное использование.
Примеры:
abs(-10) * (12 + max(1,4,0))
160

12 + abs(-10, 3)
Error: incorrect number of parameters for function “abs”
12 * a(-10)
Error: unknown function “a”

12 + (max(1,4) 
Error: “)” expected

12 + PI2
Error: cannot resolve symbol “PI2”

abs(-min(200, 220 - sqrt(100)))
200


Каким образом можно распознавать вводимые символы и как потом их сапоставлять с математическими функциями?
PM MAIL   Вверх
shimopus
Дата 24.8.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 25.8.2006

Репутация: 1
Всего: 1



Предлагаю посмотреть в сторону стандартных библиотек математических парсеров. Или, если есть желание, написать нечто подобное самому почитать про Польскую запись математических выражений.
PM ICQ Skype GTalk   Вверх
IUser
Дата 24.8.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



 Подскажите плиз. как эти библиотеки называются и где их можно найти. 
PM MAIL   Вверх
nornad
Дата 24.8.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(IUser @  24.8.2007,  13:25 Найти цитируемый пост)
Каким образом можно распознавать вводимые символы и как потом их сапоставлять с математическими функциями? 

Ну, приплыли. А как вообще узнать, то ввели? Как это сохранить где-то в памяти? Как вывести куда-нибудь?
Не проще ли сначала найти какую-нибудь книжку и хотя бы пролистать её?

А по задаче - поищи исходники какого-нибудь консольного калькулятора и смотри, как там сделано.

Добавлено через 1 минуту и 28 секунд
Цитата(IUser @  24.8.2007,  15:34 Найти цитируемый пост)
Подскажите плиз. как эти библиотеки называются и где их можно найти. 

Найти их можно в жабадоке.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
CrasyMen
Дата 29.8.2007, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



Цитата(nornad @  24.8.2007,  13:55 Найти цитируемый пост)
Найти их можно в жабадоке.

можно назвать класс или хотя-бы пакет?


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Tony
Дата 29.8.2007, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: нет
Всего: 12



В 6 jdk появилась возможность запускать(parsit') javascript. Вот там страку можно подс4итать "(3^7)*5+8".


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
CrasyMen
Дата 29.8.2007, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 19.12.2006

Репутация: нет
Всего: 3



И где оно такое есть? Я пересмотрел все класы в 6 jdk, в которых в названии присутствует "pars". Не нашол ничего подходящего.
А можно пример  smile 


--------------------
Человек просто обязан ошибаться, раз другие учатся на его ошибках.
[color=skyblue]Хочу сменить ник и сменю как только дадут такую возможность.[/color]
PM MAIL ICQ   Вверх
Tony
Дата 29.8.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: нет
Всего: 12



Код

ProductBean productBean = new ProductBean();
        productBean.setId("blknfdgregj9jg34jtg9034");
        productBean.setProduct("Apple");
        
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByExtension("js");
        try{
            engine.eval(new FileReader("workwithjs/some.js"));
            Invocable inv = (Invocable) engine;
            inv.invokeFunction("test",productBean);
        }catch(Exception e){
            e.printStackTrace();
        }

Код

/**
    test some function
*/
function test(productBean){
    print('Product is:'+' '+ productBean.getProduct());
}

Както для себя налобал. Если 4то пиши

Добавлено через 3 минуты и 35 секунд
Там есть возможность ешё без файла а просто строку передать и парсер распарсит есё.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.