我的pascal程序错在哪里
发布网友
发布时间:2024-10-15 17:05
我来回答
共4个回答
热心网友
时间:2024-11-03 00:20
以下为你的主程序部分
begin
read(n);
for i:=1 to n do read(s[i]);
a:=round(sqrt(n)); //block amount
b:=n div a; //every block length
if n mod b<>0 then inc(b);
c:=n mod b; //last block amount
for i:=1 to a do
begin
l[i]:=i*b-b+1;
if i=a then r[i]:=n
else r[i]:=i*b;
x[i]:=maxlongint;
for j:=l[i] to r[i] do if s[j]<x[i] then x[i]:=s[j];
end;
read(m);
for i:=1 to m do
begin//不妨令此begin为1号
read(a1,b1,c1);
if a1=1 then
writeln(min(b1,c1))
else
begin//不妨令此begin为2号
s[b1]:=c1;
x[getblock(b1)]:=getmin((getblock(b1)-1)*b+1,getblock(b1)*b);
end;//此处系统会默认为是begin2号 的end
end.此处为整个程序的end.可是begin1号没有找到end,所以就出错了
希望能够帮上忙
热心网友
时间:2024-11-03 00:20
数了两遍,一共87行,不知道97行在哪
不过最后那个循环
for i:=1 to m do
有begin,没有对应的end;
热心网友
时间:2024-11-03 00:21
少了end, 在倒数第6行的else 前面= =。
热心网友
时间:2024-11-03 00:21
d的数值超过integer的范围了,integer的范围是-32769~32767,我算了下,你的最终d的是值是67459875;
所以超了,建议把变量的integer改为longint,这样就能过了