locked
Вопрос по обработке текста(чтение математических функций и т.п.) RRS feed

  • Вопрос

  • Как лучше реализовать обработку строки, чтобы в результате получалась математическая формула? Вроде как на сайтах, забиваешь формулу, а она там тебе что-то считает. Обратная польская запись тут подойдет? Или предложите другие варианты, буду рад)
    3 декабря 2013 г. 18:56

Ответы

  • все не просто, нужен алгоритм, 

    например:

    (sqrt(((3*x)^2)+31)  = 15);

    надо научить алгоритм распознавать символы, таких как x, sqrt, (, ), *, +, =, /, ^ и так далее.

    Позже с рекурсией вытаскивать некие временные переменные и привести к x



    4 декабря 2013 г. 8:50
  • А вот для определения приоритетности операций, да, польская запись подойдет.
    Если бы такую задачу решал я, то написал:
    1. Лексический анализатор, разбивающий входную последовательность на лексемы. Например: x*sqrt(x)/s разбивается на x * sqrt ( x ) / s
    2. Синтаксический анализатор проверяющий допустимость последовательности лексем поступающих на вход. Например: x*sqrt(x)//s выдаст ошибку: "Неправильная лексема '/' после лексемы '/' ожидается операнд.
    3. Перевод в постфиксную форму или построение ExpressionTree.
    4 декабря 2013 г. 9:13
    Отвечающий

Все ответы

  • все не просто, нужен алгоритм, 

    например:

    (sqrt(((3*x)^2)+31)  = 15);

    надо научить алгоритм распознавать символы, таких как x, sqrt, (, ), *, +, =, /, ^ и так далее.

    Позже с рекурсией вытаскивать некие временные переменные и привести к x



    4 декабря 2013 г. 8:50
  • А вот для определения приоритетности операций, да, польская запись подойдет.
    Если бы такую задачу решал я, то написал:
    1. Лексический анализатор, разбивающий входную последовательность на лексемы. Например: x*sqrt(x)/s разбивается на x * sqrt ( x ) / s
    2. Синтаксический анализатор проверяющий допустимость последовательности лексем поступающих на вход. Например: x*sqrt(x)//s выдаст ошибку: "Неправильная лексема '/' после лексемы '/' ожидается операнд.
    3. Перевод в постфиксную форму или построение ExpressionTree.
    4 декабря 2013 г. 9:13
    Отвечающий