1101.表达式求值(难)
Posted bernieloveslife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1101.表达式求值(难)相关的知识,希望对你有一定的参考价值。
题目描述:
对于一个不存在括号的表达式进行计算
- 输入:
-
存在多种数据,每组数据一行,表达式不存在空格
- 输出:
-
输出结果
- 样例输入:
-
6/2+3+3*4
- 样例输出:
-
18
#include<stack> #include<stdio.h> using namespace std; char str[220];//保存表达式字符串 int mat[][5]={//优先级矩阵,mat[i][j]=1,代表i号运算符优先级大于j号运算符 1,0,0,0,0, 1,0,0,0,0, 1,0,0,0,0, 1,1,1,0,0, 1,1,1,0,0, }; stack<int>op;//运算符栈 stack<double>in;//数字栈 void getOp(bool &reto,int&retn,int&i){ //获得表达式中下一个元素,若函数运行结束时,引用变量reto为true,则表示该元素为一个运算符,其编号保存在retn中; //否则,表示该元素为一个数字,其值保存在retn中。引用变量i表示遍历到的字符串下标 if(i==0&&op.empty()==true)//若此时遍历字符串第一个字符,且运算符栈为空,我们人为添加标记为0的标记字符 { reto=true;//为运算符, retn=0;//编号为0 return; } if(str[i]==‘