writeln() 与 Pascal 输出混淆

问题描述 投票:0回答:0

在计算机科学课上,我的任务是编写一段简单的代码。程序接收一个整数序列,它应该输出最长的相同整数序列的长度。它也会在读取两个零后停止。

代码如下:

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

最终目标是创建一个可以正常工作但不会产生空行的程序。

pascal
© www.soinside.com 2019 - 2024. All rights reserved.