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
交换时,请务必像您当前所做的那样交换整个记录。不要只是交换值。
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
交换时,请务必像您当前所做的那样交换整个记录。不要只是交换值。