Вот в чём суть. Мне надо исправить в этом коде процедуру Re-перестановки элементов по индексу. И не получется сделать, чтобы процедура Del удаляла элемент исходного массива , а не после вставки элемента (. Благодарю за помощь
Код | implementation type Areal=array of integer; var a:Areal ;
{$R *.dfm}
procedure CreateMas(var Aq:Areal;N:integer ); var I:Integer;
begin SetLength(Aq,N); for I:=0 to N-1 do begin Aq[i]:=i+1; end; end; procedure ShowMas(var Aw:Areal;Memo:TMemo); var N:Integer; I:Integer; Begin N := Length(Aw); for I:=0 to N-1 do begin Memo.Lines.Add(IntToStr(Aw[i])); end; End; procedure Ainsert (var Ar:Areal;R:integer; Ind:integer); var N:Integer; I:Integer;
begin N:=Length(Ar); SetLength(Ar, N+1); for i:=N-1 downto Ind do Ar[i+1]:=Ar[i]; Ar[ind]:=R; end; procedure Del(var Ae:Areal; x:integer); var N:Integer; I:Integer; begin N:=Length(Ae); for i:=x to N-1 do Ae[i-1]:= Ae[i]; SetLength(Ae, N-1); end; procedure Re( var Ay:Areal; v:integer; h:integer); var N:Integer; I:Integer; tmp:integer; begin N := Length(Ay); for I:=0 to N-1 do
tmp:=A[v]; A[v]:=A[h]; A[h]:=tmp; SetLength(Ay, N);
end; procedure TForm1.Button1Click(Sender: TObject); var N:integer; begin N:=StrToInt(Edit1.Text); CreateMas(A,N); Memo1.Clear(); ShowMas(A,Memo1); Ainsert(A,StrToInt(Edit2.Text),StrToInt(Edit3.Text)-1); Memo2.Clear(); ShowMas(A,Memo2); Del(A,StrToInt(Edit4.Text)); Memo3.Clear ; ShowMas(A,Memo3); Re(A, StrToInt(Edit5.Text),StrToInt(Edit6.Text)-1); ShowMas(A,Memo4);
end;
end. |
|