Arrays 将2行输入读入2个数组
我正在尝试转换输入,如下所示:Arrays 将2行输入读入2个数组,arrays,delphi,input,stdin,pascal,Arrays,Delphi,Input,Stdin,Pascal,我正在尝试转换输入,如下所示: 1 5 9 12 16 21 25 3 7 12 13 14 15 16 19 20 26 分成两个数组,每行输入一个数组。目前我有以下代码: FUNCTION readId : integer; VAR id : integer; i : integer; first : a; second : a; TYPE a = ARRAY[0..(size - 1)]
1 5 9 12 16 21 25
3 7 12 13 14 15 16 19 20 26
分成两个数组,每行输入一个数组。目前我有以下代码:
FUNCTION readId : integer;
VAR
id : integer;
i : integer;
first : a;
second : a;
TYPE
a = ARRAY[0..(size - 1)] OF integer;
BEGIN
i := 0;
WHILE (NOT eoln) DO BEGIN
read(id);
first[i] := id;
Inc(i);
END;
i := 0;
WHILE ((NOT eof) AND (NOT eoln)) DO BEGIN
read(id);
second[i] := id;
Inc(i);
END;
END;
这适用于第一个数组,但第二个数组未填充。我做错了什么?当eoln为真时,第一个while循环将结束,而在第二个while循环的开头,eoln仍然为真。这意味着第二个while循环的主体永远不会执行,因为条件(而不是eof和noteoln)将为false
您可以尝试将readln放在第二个while循环之前。使用调试器找出原因。考虑阅读不可能进入第二行的原因。为什么使用旧的Pascal I/O,而不是更新的RTL风格I/O?您可以使用TStringList或TStreamReader来读取单独的行,并使用单独的TStringList来解析每一行。顺便说一句,您的代码不会编译,因为a的声明在定义它的类型声明之前,并且没有定义大小。将来请包含您的实际代码,这样读者就不必在这些错误上浪费时间。@MartynA我找不到如何调试我的pascal代码?您在哪里找到的?见例。