Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
КАВ
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 42
#1

Парсер математических функций на java - Программирование Android

03.10.2016, 23:11. Просмотров 462. Ответов 6
Метки нет (Все метки)

Всех приветствую. Я хочу написать программу под android на java для работы с математическими функциями,но самое сложное,это написать парсер,который будет пытаться разобрать строку с функцией. При этом,стоит учитывать,что функции могут быть сложными,т.е выражение может иметь несколько скобок. Например,хотелось бы,чтобы парсер мог разобрать примерно такую строку:
y=x^(log(2*atan(x^2)/4*asin(1/2+0.5)))*tan(log(x^2))
При этом хотелось бы,чтобы даже если в строке не написано y=,парсер всё равно разбирал эту строку и возвращал результат вычисления выражения. Очень не хотелось бы писать парсер с нуля,поэтому у меня вопрос к форумчанам,может уже написан готовый парсер математических функций на java или другом языке? Заранее всех благодарю за помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2016, 23:11     Парсер математических функций на java
Посмотрите здесь:
Android Java.io.IOException Jsoup парсер
Парсер JSON Android
XML парсер Android
android парсер Android
Html парсер Android
Android Парсер сайта
Android Studio Парсер Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xoraxax
684 / 670 / 151
Регистрация: 05.07.2013
Сообщений: 3,137
Завершенные тесты: 1
03.10.2016, 23:54     Парсер математических функций на java #2
exp4j, jeval, вроде в apache commons что-то было
КАВ
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 42
04.10.2016, 10:28  [ТС]     Парсер математических функций на java #3
Здравствуйте. А не могли бы Вы дать ссылку на тот ресурс,где Вы это видели.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
04.10.2016, 11:05     Парсер математических функций на java #4
https://en.wikipedia.org/wiki/Exp4j
КАВ
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 42
05.10.2016, 14:26  [ТС]     Парсер математических функций на java #5
Огромное Вам спасибо. Это как раз то,что мне нужно. Если всё,что я прочитал про эту библиотеку правда,то это очень здорово. Только у меня возникает вопрос,можно ли добавлять собственные функции и если да,то как? Операции добавлять точно можно,и я даже нашёл пример с добавлением факториала,а как добавлять свои функции я не понял. Например,я хочу,чтобы моя программа распознавала функции не только с натуральным логарифмом,но и с другими логарифмами. Также хотелось бы,например,чтобы моя программа вычисляла квадратный корень не только видя подстроку sqrt,но и видя символ √. Заранее благодарю всех за помощь
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
05.10.2016, 15:26     Парсер математических функций на java #6
Цитата Сообщение от КАВ Посмотреть сообщение
не только видя подстроку sqrt,но и видя символ √
В чем проблема заменить после парсинга с editText символа √ на sqrt.

Добавлено через 2 минуты
Пример реализации собственной функции:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function avg = new Function("avg", 4) {
 
    @Override
    public double apply(double... args) {
        double sum = 0;
        for (double arg : args) {
            sum += arg;
        }
        return sum / args.length;
    }
};
double result = new ExpressionBuilder("avg(1,2,3,4)")
        .function(avg)
        .build()
        .evaluate();
 
double expected = 2.5d;
assertEquals(expected, result, 0d);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2016, 18:24     Парсер математических функций на java
Еще ссылки по теме:
Android Парсер html, вылетает приложение
Как передать параметр в RSS парсер Android
C# Парсер математических функций
Как написать парсер математических функций? C++
C++ Парсер математических выражений

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
КАВ
13 / 1 / 0
Регистрация: 16.04.2016
Сообщений: 42
08.11.2016, 18:24  [ТС]     Парсер математических функций на java #7
Всех приветствую. Мне очень понравилась эта библиотека. Она действительно очень хорошо парсит сложные математические выражения и функции,но у меня возник по ней вопрос. Можно ли как-то выкрутиться и создать функцию с неопределённым количеством аргументов. Ведь,например,функция avg может иметь не 2 арогумента,а 3,4,5 и т.д. Просто метод apply,который я переопределяю,позволяет сделать это,но конструктор этого сделать не позволяет,а поле NumArguments,куда записывается количество аргументов,protected final. Если пренебречь конструктором,задав в нём одно количество аргументов,>=0,а в методе apply задать другое значение аргументов,тоже >=0,то программа вылетает с с соответствующим exception,где причина exception,как я понял,в том,что количество аргументов в конструкторе,не соответствует длине массива,который подаётся на вход методу apply. Помогите пожалуйста решить эту проблему.
Yandex
Объявления
08.11.2016, 18:24     Парсер математических функций на java
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru