题目描述
表达式所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)以@表示结束。如 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;
}