@Genster

Как сделать калькулятор, который учитывает приоритет операций?

Здравствуйте, у меня вопрос.

Делаю калькулятор на С#, в принципе... Все сделал, но вот один нюанс. Если задать калькулятору пример, типо: 51+123*5
Калькулятор решает так: сначала сложение, а потом умножение, что есть неверно. Согласно законам математики, сначала производится умножение или деление, а потом сложение или отнимание.

Вот я и хочу сделать, чтобы калькулятор считал сначала умножение или деление, а потом сложение или отнимание.

Код на кнопку равно:
void OnEqualButtonClicked(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(currentOperator) && !string.IsNullOrWhiteSpace(currentInput))

    {
        double input = double.Parse(currentInput, CultureInfo.InvariantCulture);
        switch (currentOperator)
        {
            case "+":
                currentResult += input;
                break;
            case "-":
                currentResult -= input;
                break;
            case "*":
                currentResult *= input;
                break;
            case "/":
                if (input != 0)
                    currentResult /= input;
                else
                {
                    resultLabel.Text = "Ошибка! Деление на ноль.";
                    return;
                }
                break;
            default:
                resultLabel.Text = "ОШИБКА ВВОДА!";
                return;
        }

        currentInput = currentResult.ToString(CultureInfo.InvariantCulture);
        currentOperator = "";
        resultLabel.Text = currentInput;
       
    }
}

Подскажите пж, как модифицировать код, чтобы он делал как я написал сверху.
  • Вопрос задан
  • 382 просмотра
Решения вопроса 1
Steel_Balls
@Steel_Balls
Простейшие калькуляторы пишутся с использованием обратной польской записи и с применением стека. И уже в самом стеке производится сравнение приоритетов операций
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Тебе нужно это:
https://ru.wikipedia.org/wiki/Алгоритм_сортировочн...
А дальше как just_RYAN написал.

А ещё может быть интересна эта статья:
https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
Ответ написан
Ваш ответ на вопрос

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

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