Pascal,合并两个文本文件并按行长度排序

问题描述 投票:-1回答:1

所以我有两个文本文件,不同的长度,不同的内容。但是每个文件中的每一行都会变得更大/更长。我需要创建第三个文本文件,我将从这两个文件中放入这些行,也以相同的排序方式(从最短行开始...)。如果第一个和第二个文件中的两行都是相同的大小,我应该打印它们。

到目前为止我有这个:

assign(file1, 'file1.txt');
assign(file2, 'file2.txt');
assign(file3, 'file3.txt');
reset(file1);
reset(file2);
rewrite(file3);

readln(file1,s1);
readln(file2,s2);

while MISSING CONDITION do
  begin
    if length(s1) > length(s2) then
    begin
      writeln(file3, s1);
      readln(file1, s1);
    end
    else if length(s1) < length(s2) then
    begin
      writeln(file3, s2);
      readln(file2, s2);
    end
    else
    begin
      writeln(file3, s1);
      writeln(file3, s2);
      readln(file1, s1);
      readln(file2, s2);
    end;
  end;

close(file1);
close(file2);
close(file3);  

我认为我的排序算法很好,如果不是,请纠正我。但我需要帮助我需要多长时间才能做到这一点。如果这两个文件的长度不一样,我不知道该怎么办..

谢谢..

file sorting text pascal
1个回答
0
投票

到达文件末尾时,需要停止读取文件。您可以使用Eof()函数检测到这一点。您需要为每个输入文件单独测试此条件,因为可能比另一个包含更多行。

检查您的算法。如果输出文件必须从较短的行到较长的行,那么您应该首先写入哪个行,更长或更短? ;)还要考虑一个文件在一个文件之前可能有几个较短的行,这个行比另一个文件中的当前行长。您可能需要在主循环内创建其他循环。

我建议你创建几个测试文件来测试你的算法。

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