c++计算方程,求思路和题解

题目描述

表达式所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)以@表示结束。如 3*(3-1)就写为 3 3 1 - * @;在写表达式 的时候以空格隔开。

输入格式

输入一行一个字符串 s,表示表达式。

输出格式

输出一个整数,表示表达式运算后的值

样例输入1
3 3 1 - * @
样例输出 #1
6
样例输入 #2
1 1 + 2 3 * - @
样例输出 #2
4
有人可以帮忙看一下吗,蒟蒻不会了。

供参考

int main()
{
    vector<int> input;
    int a, b, result = 0;
    char str[100];
    cin.getline(str, 100);

    char *s = strtok(str, " ");
    while (s != NULL && *s != '@')
    {
        if (isdigit(*s))
        {
            result = atoi(s);
            input.push_back(result);
        }
        else
        {
            b = input.back();
            input.pop_back();
            a = input.back();
            switch (*s)
            {
            case '+':
                result = a + b;
                break;
            case '-':
                result = a - b;
                break;
            case '*':
                result = a * b;
                break;
            case '/':
                result = a / b;
                break;
            }
            input.pop_back();
            input.push_back(result);
        }

        s = strtok(NULL, " ");
    }
    cout << result << endl;

    return 0;
}