内蒙古一本上线人数:求一个程序的源代码,使用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;