инструмент для добавления скобок в уравнения? - PullRequest
2 голосов
/ 21 апреля 2010

Есть ли онлайн-инструмент для добавления скобок в простые математические уравнения?Например,

a + b * c

в

a + (b * c)

Те, кто уделял больше внимания математическому классу, могли бы решать порядок операций для огромных уравнений в своей голове, но я часто мог использоватьнекоторая помощь (и проверка моего мышления).

Я часто сталкиваюсь с библиотеками других людей, имеющими уравнения и функции, которые мне нужны для моего кода, и это было бы отчасти полезно для отладки и понимания.

Я надеялся, что Wolfram Alpha сделает это, ноНелегко подключить вывод к большинству языков программирования, например a + (bc)

Ответы [ 3 ]

1 голос
/ 23 апреля 2010

Существует замечательный сайт для анализа паролей, который называется PEG.js . Я использовал его для создания круглых скобок . Проверьте это. В настоящее время он обрабатывает только +,-,*,/, но его легко добавить.

1 голос
/ 21 апреля 2010

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

0 голосов
/ 28 апреля 2010

Язык, подобный SML, предложит особенно общее решение для анализа произвольных операторов с произвольными операторами с аббревиатурой. Например, в оболочке SML введите

datatype ty = + of ty * ty | * of ty * ty | <& of ty * ty | I of int;
infix <& 9; (*Gives our new crazy op a high priority*)

Если вам нужен вывод текста, то примерно так это и будет делать:

fun pr (a*b) =(print"(";pr a;print"*";pr b;print")")
  | pr (a<&b)=(print"(";pr a;print"+";pr b;print")")
  | pr (I a) =print (Int.toString a);

Затем он будет анализировать все, что вы вводите в дерево, которое вы хотите. Существует не так много языков со встроенной поддержкой для добавления новых инфиксных операторов. В противном случае вам придется использовать библиотеки или парсеры строк.

Мне это не поможет, но это самое крутое решение (как и почти все, что использует классные языки, такие как SML).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...