台州社保比例:PASCAL 字符串的处理

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 21:01:53
编一程序,是关于计算器的,要求能进行简易计算,
括号配对,有否非法字符,有无多余括号...谢谢大侠们救救
用pascal编写哦

好啊,我是OIer哦,这个显然很简单。

{$r-,s-,q-} {dai shu shi qiu zhi}
const
fuhao=['+','-','*','/','^']; {可以进行这些运算}
kuohao=['(',')'];
var
st,s1:string;
function ji(ch:char):integer;
begin case ch of '+':ji:=1;'-':ji:=1;'*':ji:=2;'/':ji:=2;'^':ji:=3;end;end;
function geti(st : string; i : longint) : longint;
var t:longint;
begin
t :=1;
while t <> 0 do begin
inc(i);
if st[i] = '(' then inc(t);
if st[i] = ')' then dec(t);
end;
geti:=i;
end;
function va(s:string):longint;
var min,i,code:longint;
begin min:=0;
val(s,va,code);
if code=0 then exit;
for i:=1 to length(s) do begin
if s[i] in fuhao then if min=0 then min:=i
else if ji(s[i])<=(ji(s[min])) then min:=i;
if s[i]='(' then begin str(va(copy(s,i+1,geti(s,i)-i-1)),s1);
delete(s,i,geti(s,i)-i+1);
insert(s1,s,i);
va:=va(s);
exit
end;end;
case s[min] of
'+':va:=va(copy(s,1,min-1))+va(copy(s,min+1,length(s)));
'-':va:=va(copy(s,1,min-1))-va(copy(s,min+1,length(s)));
'*':va:=va(copy(s,1,min-1))*va(copy(s,min+1,length(s)));
'/':va:=va(copy(s,1,min-1)) div va(copy(s,min+1,length(s)));
'^':va:=round(exp(va(copy(s,min+1,length(s)))*ln(va(copy(s,1,min-1)))));
end;
end;
begin
readln(st);
writeln(va(st));
end.

这语言太烂了

1. 楼上的回答才是 “太烂了”
2. 这不是一句话能说得明白的,请看一下算法语言有关的章节(算术表达式)

恰好我以前编了一个:(好像是去年编的) http://bbs.cqyzedu.com/dispbbs.asp?boardID=24&ID=4729&page=1

基本上符合要求..(但对判断是否有非法字符支持不够好)

这种东西应该自己练习才对