2012-11-21 65 views
1

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

我知道从一个文件读取并打印到一个文件中查看并告诉,但是当涉及到从1到100的所有文件时,无需读取(X),读取(Y)等等在线看()我迷路了。那么你会如何解决这个问题?

回答

0

请注意,这个描述比实际的代码要冗长得多。

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

即, (使用Edinburgh-style I/Osee输入文件,保持read ING,在直到输入一个列表存储= end_of_file(然后关闭列表),即使用msort后命令列表,然后tell输出文件,并用一个循环写每个列表中的元素。您可以使用长度/ 2来检查实际上是否有100个数字。

编辑未经测试的代码来读取当前输入

read_list(L) :- 
    read(N), N \= end_of_file 
    -> L = [N|Ns], !, read_list(Ns) 
    ; L = [] 
    . 
+0

列表,但你如何去通过列表?到目前为止,在我的程序中,我逐行阅读,比如{read(X),read(Y)}读取前两行。所以对于文件中的100个数字来说,这将是很多。你如何将它们放入列表中? –

+0

看到我的编辑,你需要看到/ 1之前的文件,并看到/ 0之后... – CapelliC

+0

它的工作原理,但什么是 - >?我使用:看到('C:// Documents and Settings // numbers.txt'),读取(L),读取列表(L),msort(L,X),看到, tell('C:// Documents and设置// numbout.txt'),告诉。 –