Morpheus_God
@Morpheus_God

Как из строки вытащить действие над числом?

Добрый день.
Пишу калькулятор который должен из строки вытаскивать первое и второе число и проводить действие.
Примером может служить калькулятор который поставляется с Windows. Там все действия отображаются в строке.
Нашел кучу исходников, но везде надо вводить число затем действие над числом.
Мне бы хотелось ввести в переменную string выражение типа:
1+1 и нажав Enter получить результат.
Как это реализуется? При помощи регулярных выражений? Или же нужно строку преобразовать в массив и потом уже работать с индексами?
  • Вопрос задан
  • 153 просмотра
Решения вопроса 2
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Традиционный способ разбора арифметических выражений - это стек. Задаем приоритет операций и далее из строки выбираем числа и операции в соответствии с приоритетом и складируем в стек. В калькуляторе все еще проще: есть три основные переменные - "операция" и "операнд1" "операнд2". Когда пользователь набирает число - оно показывается на экране, это "операнд1", когда пользователь нажимает кнопку "операция" - переменная "операнд1" копируется в "операнд2" и ставится флаг, который разрешает перезапись текущего значения цифровой клавиатурой (т.е., число на экране надо будет набрать заново). И далее уже есть два варианта: либо сразу после ввода любого числа выводить результат в дополнительном поле либо пользователь сам нажимает "=".
Ответ написан
Обычно для разбора не пишут свои велосипеды, а используют генераторы лексических анализаторов Lex (.net аналог GPLEX) и используют совместно с генератором синтаксических анализаторов yacc (.net аналог GPPG) .

Можно посмотреть пример.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы