中易网

表达式求值 栈 运算符优先级表

答案:1  悬赏:80  
解决时间 2021-02-19 18:33
表达式求值 栈 运算符优先级表
最佳答案
表达式的求值

问题:能否设计算法,编制一个程序,让计算机扫描如下表达式,并将其值打印出来。

  # 3 * ( 4 + 8 ) / 2 -5 #

  注:给表达式设置#,标志扫描的开始和结束。

  提示算法:设两个栈,一个是操作数栈,用来存放操作数,如3、4、8等,另一个是运算符栈,用来存放运算符。

  首先将标志“#”进运算符栈的栈底。

  然后依次扫描,按照栈的后进先出原则进行:

  (1)遇到操作数,进操作数栈;

  (2)遇到运算符时,则需将此运算符的优先级与栈顶运算符的优先级比较,

  若若高于栈顶元素则进栈,继续扫描下一符号,

  否则,将运算符栈的栈顶元素退栈,形成一个操作码Q,同时操作数栈的栈顶元素两次退栈,形成两个操作数a、b,让计算机对操作数与操作码完成一次运算操作,即aQb,并将其运算结果存放在操作数栈中……

模拟计算机处理算术表达式过程。从键盘上输入算术表达式串(只含+、-、×、÷运算符,充许含括号),输出算术表达式的值。设输入的表达式串是合法的。

附源程序:

program exsj_1;

const

max=100;

var

number:array[0..max] of integer;

symbol:array[1..max] of char;

s,t:string;

i,p,j,code:integer;

procedure push;{算符入栈运算}

begin

inc(p);symbol[p]:=s[i];

end;

procedure pop;{运算符栈顶元素出栈,并取出操作数栈元素完成相应的运算}

begin

dec(p);

case symbol[p+1] of

'+':inc(number[p],number[p+1]);

'-':dec(number[p],number[p+1]);

'*':number[p]:=number[p]*number[p+1];

'/':number[p]:=number[p] div number[p+1];

end;

end;

function can:boolean;{判断运算符的优先级别,建立标志函数}

begin

can:=true;

if (s[i] in ['+','-']) and (symbol[p]<>'(') then exit;

if (s[i] in ['*','/']) and (symbol[p] in ['*','/']) then exit;

can:=false;

end;

begin

write('String : '); readln(s); s:='('+s+')'; i:=1; p:=0;

while i<=length(s) do

begin

while s[i]='(' do {左括号处理]

begin

push; inc(i);

end;

j:=i;

repeat {取数入操作数栈}

inc(i);

until (s[i]<'0') or (s[i]>'9');

t:=copy(s,j,i-j); val(t,number[p],code);

repeat

if s[i]=')' then {右括号处理}

begin

while symbol[p]<>'(' do pop;

dec(p); number[p]:=number[p+1];

end

else

begin {根据标志函数值作运算符入栈或出栈运算处理}

while can do pop;

push;

end;

inc(i);

until (i>length(s)) or (s[i-1]<>')');

end;

write('Result=',number[0]);

readln;
end.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
型男部落地址有知道的么?有点事想过去
英语11点怎么写
云凌社区在哪里啊,我有事要去这个地方
铁瑞仕怎么去啊,有知道地址的么
photoshop怎么全选图层
白鹤大酒店-茶厅地址在什么地方,想过去办事
哪种手机 浏览器 可以设置为点击链接强制在后
《创世纪》里的马志强最后知道他父母是怎么死
非常酷的文字和词
答案是腰带的谜语 谜语速求
城关镇东关社区幼儿园我想知道这个在什么地方
为什么我学什么都学不会是我接受能力不强吗
西沟作业区这个地址在什么地方,我要处理点事
DNF男漫游和女漫游哪个刷图帅气?
形近字注音.组词
推荐资讯
我是河间市景和镇的,想考驾照,请问哪一家驾
我是学机械专业的,想学一门第2外语,方便以后
09年山东理科433能被滨州职业学院的护理系录
完了,我女朋友被人汤了吃肉了,怎么办?
四海之内皆兄弟,五洲震荡和为贵
水蒸气导电吗?空气湿度较大时 会触电吗?
河南省什么时候施行十二年义务教育?
自己编写的发邮件小程序,在发送一个邮件后,
奔驰,宝马,奥迪,林肯,雷克萨斯,凯迪拉克
辉源铝窗配件五金店地址在哪,我要去那里办事
荔波血桃代办谁有给我一个
准备做桶装水生意
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?