逆波兰式计算

1.颠倒数组      用递归的算法把数组中的N个数的次序重新存放后输出。 2.逆波兰式     由键盘输入一个算术表达式,求出它的逆波兰式,并输出数值。     例:((3+4)*3+15)/3  

1.颠倒数组 递归 用的算法把数组中的N个数的次序重新存放后输出。 2.逆波兰式 由键盘输入一个算术表达式,求出它的逆波兰式,并输出数值。 例:((3+4)*3+15)/3的逆波兰式为34+3*15+3/ 计算结果为12 constm=100; typestack=array[1..m]ofinteger; vars:stack; a:string; t,i,j,k,len:integer; procedurepush(x:integer);{进栈} begin t:=t+1; s[t]:=x; end; functionpop:integer;{出栈} begin pop:=s[t]; t:=t-1; end; begin readln(a);{读入后缀表达式} len:=length(a); i:=1;{后缀表达式字符指针初始化} t:=0;{栈初始化} whilei<=lendo{处理后缀表达式,直至结束} begin casea[i]of '0'..'9':begin k:=0; whilea[i]<>’.’do begin{从s中取出一个完整的操作数k} k:=10*k+ord(a[i])-48; i:=i+1; end; push(k);{把k压栈} end; '+':push(pop+pop); {从栈s中取出栈顶的两个数进行加法运算,然后将结果在压栈} '-':begin{从栈s中取出栈顶的两个数进行减法运算,然后将结果在压栈}

腾讯文库逆波兰式计算