1

作为输入数据,我有一个包含 100 行的文件。在每一行上,我都有一个数字,后跟一个点。我需要将排序后的数字越来越多地打印到另一个文件中。

我知道从文件中读取并使用 see and tell 打印到文件中,但是当涉及从 1 到 100 的所有文件时,无需对 see 中的每一行执行 read(X)、read(Y) 等() 我搞不清楚了。那么你将如何解决这个问题呢?

4

1 回答 1

0

请注意,此描述比所需的实际代码要详细得多。

?- read_input(L), msort(L, S), write_output(S).

即(使用爱丁堡风格的 I/O查看输入文件,继续阅读,存储在列表中直到输入 = end_of_file(然后关闭列表),然后使用msort对列表进行排序,然后告诉输出文件,然后用循环写入列表的每个元素。您可以使用 length/2 检查是否真的有 100 个数字。

编辑未经测试的代码以从当前输入中读取列表

read_list(L) :-
  read(N), N \= end_of_file
  -> L = [N|Ns], !, read_list(Ns)
  ;  L = []
  .
于 2012-11-21T09:31:29.767 回答