0
procedure tri_selection(t: tab; n: Integer);
var
 i, j, min, aux: Integer;
begin

  for i := 1 to n - 1 do
  begin

    min := i;

    for j := i + 1 to n do
      if t[j] < t[min] then
        j := min;

    if min <> i then
    begin
      aux := t[i];
      t[i] := t[min];
      t[min] := aux;
    end;

  end;

end;

这应该是一个正确且众所周知的代码,用于将整数从下级排列到上级,但编译器仍然坚持说“非法分配给 for loop 'j' 变量”。

有什么问题?

4

2 回答 2

1

问题在这里:

for j := i + 1 to n do
  if t[j] < t[min] then
    j := min;                      // <-- Not allowed to assign to FOR loop variable j

您不能分配给for循环变量。

也许你的意思是写

for j := i + 1 to n do
  if t[j] < t[min] then
    min := j;
于 2020-09-25T13:05:09.703 回答
0

您在过程的标题中忘记了 t 之前的 var

于 2020-09-28T11:00:27.850 回答