Программа преобразования инфикса в постфикс на C++

Вот пример программы преобразования инфикса в постфикс на C++:

#include <iostream>
#include <stack>
#include <string>
// Function to check if a character is an operator
bool isOperator(char c) {
    return (c == '+' || c == '-' || c == '*' || c == '/');
}
// Function to get the precedence of an operator
int getPrecedence(char op) {
    if (op == '+' || op == '-')
        return 1;
    else if (op == '*' || op == '/')
        return 2;
    return 0;
}
// Function to convert infix expression to postfix
std::string infixToPostfix(const std::string& infix) {
    std::string postfix;
    std::stack<char> stack;
    for (char c : infix) {
        if (isalnum(c)) {
            postfix += c;
        } else if (c == '(') {
            stack.push(c);
        } else if (c == ')') {
            while (!stack.empty() && stack.top() != '(') {
                postfix += stack.top();
                stack.pop();
            }
            if (!stack.empty() && stack.top() == '(') {
                stack.pop();
            }
        } else if (isOperator(c)) {
            while (!stack.empty() && getPrecedence(c) <= getPrecedence(stack.top())) {
                postfix += stack.top();
                stack.pop();
            }
            stack.push(c);
        }
    }
    while (!stack.empty()) {
        postfix += stack.top();
        stack.pop();
    }
    return postfix;
}
int main() {
    std::string infixExpression;
    std::cout << "Enter an infix expression: ";
    std::cin >> infixExpression;
    std::string postfixExpression = infixToPostfix(infixExpression);
    std::cout << "Postfix expression: " << postfixExpression << std::endl;
    return 0;
}

Эта программа преобразует инфиксное выражение в постфиксное выражение с использованием алгоритма сортировочной станции. Он поддерживает операторы «+», «-», «*» и «/». Программа принимает инфиксное выражение в качестве входных данных и выводит соответствующее постфиксное выражение.

Методы, используемые в этой программе:

  1. isOperator(char c): проверяет, является ли символ оператором.
  2. getPrecedence(char op): получает приоритет оператора.
  3. infixToPostfix(const std::string& infix): преобразует инфиксное выражение в постфиксное.
  4. main(): основная функция, которая взаимодействует с пользователем, принимает входные данные и отображает выходные данные.

Обратите внимание, что программа предполагает допустимые входные выражения и не обрабатывает ошибки или недопустимые выражения.