【发布时间】:2019-08-29 18:20:41
【问题描述】:
我正在尝试转换如下输入:
1 5 9 12 16 21 25
3 7 12 13 14 15 16 19 20 26
分成2个数组,每一行输入一个数组。目前我有以下代码:
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;
这适用于第一个数组,但第二个数组未填充。我做错了什么?
【问题讨论】:
-
使用调试器找出原因。考虑读取没有进行到第二行的可能性。
-
您为什么使用旧式 Pascal I/O,而不是新式 RTL 式 I/O?您可以使用
TStringList或TStreamReader来读取各个行,并使用单独的TStringList来解析每一行。 -
顺便说一句,正如所写,您的代码将无法编译,因为
a的声明位于定义它的type声明之前,而size未定义。以后请附上您的actual代码,这样读者就不必将时间浪费在此类错误上。 -
@MartynA 我找不到如何调试我的帕斯卡代码?
-
你在哪里看过?参见例如docwiki.embarcadero.com/RADStudio/Rio/en/…
标签: arrays delphi input stdin pascal