在计算机科学课上,我的任务是编写一段简单的代码。程序接收一个整数序列,它应该输出最长的相同整数序列的长度。它也会在读取两个零后停止。
代码如下:
type int64array = array[1..10000] of int64;
var n,x,counting,buffer:int64;
var nlist:int64array;
function counter(list:int64array): int64;
var i,j,a,b:int64;
begin
for i:=1 to 10000 do
begin
if list[i]=0 then Break;
a:=1;
for j:=i+1 to 10000 do
begin
if ((list[i]=list[j]) and (list[i]=list[j-1])) then a:=a+1;
end;
if a>b then b:=a;
end;
counter:=b;
end;
begin
n:=1;
buffer:=1;
while True do
begin
readln(n);
x:=counter(nlist);
if ((n=0) and (buffer=0)) then Break;
counting:=counting+1;
nlist[counting]:=n;
buffer:=n;
writeln()
end;
writeln(x);
end.
它产生了想要的结果并正常工作,但产生了不必要的空行。
在第 30 行中丢失
writeln()
会使输出混乱,程序会产生垃圾数字。
这是两个程序的输入:
1
1
0
0
writeln()
行的输出:
2
没有它的输出:
140735786777216
最终目标是创建一个可以正常工作但不会产生空行的程序。