Pascal 记录数组

Pascal an array of records

program R3cord;
  type rekord = record
  end;

  var i,d,j,c,x,y,a : integer;

  mas : array[1..5] of rekord;
begin
  x := 4;
  y := 5;

  for i := 1 to y do
    Read(mas[i]);

  for i := 1 to x do
  begin
    d := i;

    for j :=  i + 1 to y do
      if mas[j] > mas[d] then
        d := j;

    c := mas[i]; mas[i] := mas[d]; mas[d] := c;
  end;

  for i := 1 to 5 do
    Write(mas[i],' ');
end.

我在这里遇到了麻烦,如您所见,该程序将读取用户的输入并将其按降序排序。我需要在排序之前有一个接近数字的行号。我读过记录对它有好处,但我找不到任何教程如何做。

首先,您的记录中没有任何内容。我想你想要:

type 
    rekord = record
        value: Integer;
        row: Integer;
    end;

当您阅读时:

for i := 1 to 5 do
begin
    Read(mas[i].value);
    mas[i].row = i;
end

以上将为第 1、2、3 行编号,...

在你的排序中:

if mas[j].value > mas[d].value

交换时,请务必像您当前所做的那样交换整个记录。不要只是交换值。