优先功能

Und*_*nce 2 c++ stack

我正在尝试编写一个在我的主程序中使用的函数,该函数将比较用户输入的运算符的优先级。该函数将查找以下运算符:

+-*/*/具有最高优先级和+-具有最低的优先级。

优先级最低的运算符位于堆栈的底部,而优先级最高的运算符位于堆栈的顶部。因此,如果用户输入+-*/*/+-则应在终端中显示。

关于我应该如何处理的任何想法?

Jam*_*lis 5

将所有运算符读入std::string。编写以下类型的函数:

bool is_higher_precedence(char lhs, char rhs);
Run Code Online (Sandbox Code Playgroud)

此函数应返回是否lhs具有比更高的优先级rhs

然后,您可以将此函数用作函数的functor参数,std::sort以按优先级对运算符进行排序。


Pet*_*der 5

只需使用std::sort自定义谓词对它们进行排序。

int precedence(char op)
{
    if (op == '*' || op == '/') return 0;
    return 1;
}

bool comparePrecedence(char a, char b)
{
    return precedence(a) < precedence(b);
}

int main()
{
    char input[] = "+-/";
    std::sort(input, input + 3, &comparePrecedence);
}
Run Code Online (Sandbox Code Playgroud)

显然,您可以通过将其他运算符添加到precedence函数中来添加其他运算符。