var num:Integer; p:PChar; procedure addsub ;forward; procedure factor; begin if p^ = '(' then begin inc(p); addsub; if p^<> ')' then Abort;inc(p);end else if p^ in ['1'..'9'] then begin num:=StrToInt(p^);inc(p);end; end; procedure muldiv; var save:Integer; oldsym:char; begin factor; while (p^ in ['*','/'] ) do begin save:=num;oldsym:=p^; inc(p); factor; case oldsym of '*': num:=save*num; '/': num:=save div num; end; end; end; procedure addsub; var save:Integer; oldsym:char; begin case p^ of '+': begin inc(p);MulDiv; end; '-': begin inc(p);MulDiv; num:=-num; end; else muldiv; end; while (p^ in [ '+','-'] ) do begin save:=num;oldsym:=p^; inc(p); muldiv; case oldsym of '+': num:=save+num; '-': num:=save-num; end; end; end; begin p:=PChar(作った文字列); addsub; 答えはnum