试图让Pascal从文件中读取,然后添加所有有问题的偶数。

时间:2013-03-26 23:39:20

标签: loops for-loop pascal

好的,所以我试图让Pascal从输入文件中读取一组整数,然后取偶数并将它们加在一起,范围为1-50。不适合我。这是我有的: 输入文件编号列表     1 2 3 4 5 6 7 8 9 11 12 64 13 14 15 16 71 33 34 35 36 41 44 46 82 512 49 50 我的pascal计划:

program even(input,output,indata); 
uses crt;
Var
  indata:text;
  num, even:integer;
begin
  clrscr;
  assign(indata, 'j:\num.txt');
  reset(indata)0;
  read(indata, num);
  while num>50 do
  begin
         read(indata, num);
         if num mod 2=0 then
         even:=even+num;
  end;
  writeln('Even sum is', even);
  readln( );
end. 

任何帮助都会很棒!当我运行它时,我得到文本为“偶数为0”。

3 个答案:

答案 0 :(得分:1)

您需要先修复代码,以便编译。在结束reset之后调用0的行有),这是无效的语法。

您需要先初始化even变量,使其包含有效的起点。

接下来,您需要修复while循环中的逻辑。这是倒退。 :-)如果你想在最后停止,你需要测试num < 50 - 你现在对num > 50的测试意味着循环永远不会执行,因为第一个值({{1} })结束1循环。

这适用于Delphi中的普通控制台应用程序。

while

它产生输出(根据你的代码编写方式是正确的,因为它在program Project2; uses SysUtils; var InData: Text; num, even: Integer; begin AssignFile(InData, 'D:\TempFiles\numbers.txt'); reset(indata); read(indata, num); even := 0; while num < 50 do begin read(indata, num); if num mod 2 = 0 then even := even + num; end; writeln('Even sum is ', even); readln; end. 循环中读取值64,因此比它应该执行的时间多1倍,并且{ {1}}即使如此,它也会被添加到while num - 我会留下让你弄明白的。 : - )

64

答案 1 :(得分:0)

几十年没有完成Pascal,但如果我记得:

你说的是:

while num > 50 do

并且你的第一个数字是1,所以它只是跳过循环并打印'even'的初始值,即0。

你可能意味着:

while num < 50 do

但即便如此,也会以第一个50或更高的值退出。

如果你想读取所有数字,但过滤掉那些超过50的数字,我认为它更像是:

program even(input,output,indata); 
uses crt;
Var
  indata:text;
  num, even:integer;
begin
  clrscr;
  assign(indata, 'j:\num.txt');
  reset(indata)0;  

  (* read all of the numbers *)
  while not eof(indata) do
  begin
         read(indata, num);

         (* skip those greater than 50 *)
         if num <= 50
         begin
             if num mod 2=0 then
             even:=even+num;
         end;
  end;
  writeln('Even sum is', even);
  readln( );
end. 

答案 2 :(得分:0)

以前的海报给出了很好的建议,但我会在最后添加(end.之前)

CloseFile(infile)Close(infile)

(取决于您的Pascal版本)。这可能不会影响程序输出但是养成未来的好习惯 - 如果你正在写文本文件(而不是阅读)并且不关闭它,你可能会发现一些文本丢失,或者文件变得不可读。