Pascal排列数组,行号为

时间:2016-11-30 16:09:48

标签: arrays pascal

type
  mas = array [1 .. 10000] of real;

var
  n: integer;
  a: mas;
  Rf: text;

Procedure Skaityti;
var
  i: integer;
  Df: text;
begin
  Assign(Df, 'duom1.txt');
  Reset(Df);
  Readln(Df, n);
  for i := 1 to n do
    Read(Df, a[i]);
  Close(Df);
end;

Procedure MinMax(var min, max, nrmin, nrmax, vid: real);
var
  i: integer;
begin
  min := a[1];
  max := a[1];
  nrmin := 1;
  nrmax := 1;
  for i := 1 to n do
  begin
    if min > a[i] then
    begin
      min := a[i];
      nrmin := i;
    end;
    if max < a[i] then
    begin
      max := a[i];
      nrmax := i;
    end;
    vid := vid + a[i];
  end;
  vid := vid / n;
end;

var
  min, max, nrmin, nrmax, vid: real;

begin
  Skaityti;
  MinMax(min, max, nrmin, nrmax, vid);
  Assign(Rf, 'rez.txt');
  Rewrite(Rf);
  WriteLn(Rf, 'biggest amount     ', max:7:2, '   number ', nrmax:7:0);
  WriteLn(Rf, 'smallest  amount     ', min:7:2, '   number', nrmin:7:0);
  WriteLn(Rf, 'average amount       ', vid:7:2);
  WriteLn(Rf);
  WriteLn(Rf, 'number   amount');
  Close(Rf);
end.

这是代码,它将.txt文件中的元素读取到数组中,我创建了一个程序来查找它的最大和最小值。现在我需要创建一个过程来将我的数组从大到小写入,并在其旁边写一个行号。看起来应该是这样的:

Row number       value
  5             1000000
  6             999999
  8             888888

等等..有什么想法吗?

P.S。我可以安排该数组从最大到最小但然后行号会搞乱:/

1 个答案:

答案 0 :(得分:0)

创建一个包含两个字段的记录类型,一个用于文件中的值,另一个用于&#34; row&#34;号。

将数组更改为该记录类型的数组。

在for循环中读取文件时,将读取值分配给记录的值字段,将for循环控制变量值分配为&#34; row&#34;号。

对数组进行排序时,会对记录进行排序,从而将值和行保持在一起。