内蒙古一本上线人数:求一个程序的源代码,使用VC开发的
来源:百度文库 编辑:杭州交通信息网 时间:2024/04/25 20:38:15
说明:输入需要计算的公式(比如32*(6-15)+35),系统识别并转化为逆波兰表达式,并输出正确的计算结果)
希望哪位大虾能帮帮我,我是刚注册的,所以积分不多,悬赏分不多,但还是希望你们能帮帮我,很急,最好这两天把
下面是伪代码:
PROC trnssufix(VAR exp2:string;s:stack; exp1:string);
{本算法将中缀表达式exp1转为后缀表达式exp2,使用运算符栈s}
{算法基本思想是依次从中缀表达式读入字符w: 若w是变量,直接送入结果表达式,若w是运算符,则与栈顶运算符比较,若级别高,则进栈; 若低,则栈顶元素退栈,并送入结果表达式,再取栈顶运算符比较,重复以上步骤;若w=’)’,则栈元素依次退栈,并送入结果表达式,直至’)’退栈}
initstring(exp2); initstack(s);push(s,’#’);
op:=['+','-','*','/','(',')','#']; {操作符集合}
read(w);
WHILE NOT ((w='#') AND (GETTOP(OPTR)='#')) DO
IF NOT (w IN op) THEN 〔 insert(exp2,w); read(w) 〕;
ELSE CASE precede(GETTOP(s),w) OF
'<': [ PUSH(S,w); read(w) ];
'=': IF w=’)’ THEN {遇右括号后,运算符退栈并送结果表达式,
直至左括号}
[ x:=POP(S);
WHILE x<>’(‘ DO [insert(exp2,x);x:=POP(S)]
read(w) ];
'>': [ b:=POP(S); insert(exp2,b)];
END;
ENDP;