这个pascal程序通不过,请高手过目!

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:16:50
program Project1;
TYPE
stack=ARRAY[1..30]OF integer;
VAR
s:stack;
a:string;
t,i,j,k:integer;
PROCEDURE push(VAR s:stack;x:integer;t:integer);
BEGIN
IF t=30 THEN writeln('overflow')
ELSE BEGIN t:=t+1;s[t]:=x;END;
END;
FUNCTION pop(VAR s:stack;t:integer):integer;
BEGIN
IF t=0 THEN writeln('underflow')
ELSE BEGIN pop:=s[t];t:=t-1;END;
begin
read(a);
i:=1;t:=0;
WHILE A[i]<>'@'DO
BEGIN
CASE A[i] OF
'0'..'9': BEGIN
k:=0;
REPEAT
k:=10*k+ord(A[i])-ord('0');
i:=i+1;
UNTIL A[i]='.';<

语句ELSE BEGIN pop:=s[t];t:=t-1;END; 之后应该再有一个END;结束FUNCTION pop(VAR s:stack;t:integer):integer; 的函数定义,下面的begin已经是主程序了。

程序还有其它小错误。

program Project1;
TYPE
stack=ARRAY[1..30]OF integer;
VAR
s:stack;
a:string;
t,i,j,k:integer;

PROCEDURE push(VAR s:stack;x:integer;t:integer);
BEGIN
IF t=30 THEN writeln('overflow')
ELSE BEGIN t:=t+1;s[t]:=x;END;
END;

FUNCTION pop(VAR s:stack;t:integer):integer;
BEGIN
IF t=0 THEN writeln('underflow')
ELSE BEGIN pop:=s[t];t:=t-1;END;
end;

begin
read(a);
i:=1;t:=0;
WHILE A[i]<>'@'DO
BEGIN
CASE A[i] OF
'0'..'9': BEGIN
k:=0;
REPEAT
k:=10*k+ord(A[i])-ord('0');
i:=i+1;
UNTIL A[i]='.';
push(s,k,t);
END