Pascal,3行,只读第一个,如何让它读取另外2个?

时间:2014-12-22 10:13:34

标签: pascal

program tekstinis;
var
  txt: Text;
  i, n: Integer;
  a, b, c: Integer;

function did: Integer;
begin
  if (a >= b) and (a >= c) then
    Writeln('Didziausias skaicius :', a)
  else
  if (b >= a) and (b >= c) then
    Writeln('Didziausias skaicius :', b)
  else
  if (c >= a)  and (c >= b) then
    Writeln('Didziausias skaicius:', c);
end;

begin
  Assign(txt, 'D:\Desktop\tekstine_rinkmena.txt');
  Reset(txt);
  Read(txt, a, b, c);
  if (a >= b) and (a >= c) then
    Writeln ('Didziausias skaicius :', a)
  else
  if (b >= a) and (b >= c) then
    Writeln('Didziausias skaicius :', b)
  else
  if (c >= a)  and (c >= b) then
    Writeln ('Didziausias skaicius:', c);
  ReadLn;
  Close(txt);
end.

该程序的输入是一个包含3个数字的3行文本文件。它读取第一行并显示最大数字,但我不知道如何强制它读取其他两行。

编辑:忘了提到有3行有3个数字 5 7 4, 9 9 8, 8 7 8, 我希望程序使用if函数中的每一行。那么它可以写出每行的最大数量(到目前为止,我已经成功完成了第一行)

3 个答案:

答案 0 :(得分:1)

在'reset(txt)'行之后,你必须添加一个循环:

for i:= 1 to 3 do
 begin
  readln (txt, a, b, c);
  did;
 end;

readln

端;

要么在主程序的主体中进行比较,要么在单独的程序中进行比较('did'),但不是两者都有!为清楚起见,我使用了上面的程序版本。

答案 1 :(得分:0)

过程Read仅从文件中的1行读取值。您需要使用过程ReadLn,该过程从文件读取值并转到下一行。

此处提供更多信息:

http://www.freepascal.org/docs-html/rtl/system/read.html

http://www.freepascal.org/docs-html/rtl/system/readln.html

所以,你的代码应该是这样的:

      Assign(txt, 'D:\Desktop\tekstine_rinkmena.txt');
      Reset(txt);

      ReadLn(txt, a);
      ReadLn(txt, b);
      ReadLn(txt, c);

      // ...

      Close(txt);

修改

我无法检查我的代码,因为我没有pascal编译器。但我认为这段代码可以帮到你:

Assign(txt, 'D:\Desktop\tekstine_rinkmena.txt');
Reset(txt);

While not Eof(txt)
Begin
  Read(txt, a, b, c);

  // your check of variables "a", "b" and "c"

  ReadLn(txt); // This should move file stream to the next string    
end;

Close(txt);

答案 2 :(得分:0)

我一直在使用这种方法

begin
    Assign(txt, 'D:\Desktop\tekstine_rinkmena.txt');
    Reset(txt);
    Read(txt, a);
    Readln(txt, b;
    Readln(txt, c);
    Close(txt);
    if...
  end.