songhonyi0913 2022-07-30 12:41 采纳率: 100%
浏览 38
已结题

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

题目描述

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

输入格式

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

输出格式

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

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

  • 写回答

1条回答 默认 最新

  • 浪客 2022-07-30 17:36
    关注
    供参考
    
    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月30日