program test; uses Crt; type Ts1 = ^Tel1; Tel1 = record Inf: Integer; Adr1: Ts1; end; Ts2 = ^Tel2; Tel2 = record Adr1: Ts1; Adr2: Ts2; end; Var M,N,I,J,k,h: byte; A: Ts2; El: Ts1; Buf: Ts1; Function MakeArr1(n: word):Ts1; Var I: word; Buf,Tek: Ts1; begin MakeArr1 := nil; For I := 1 to n do begin New(Tek); If I = 1 then MakeArr1 := Tek else Buf^.Adr1 := Tek; Buf := Tek; end; If N > 0 then Tek^.Adr1 := nil; end; Function MakeArr2(n,m: word):Ts2; Var I: word; Tek,Buf: Ts2; begin For I := 1 to n do begin New(Tek); If I = 1 then MakeArr2 := Tek else Buf^.Adr2 := Tek; Buf := Tek; Tek^.Adr1 := MakeArr1(m); end; Tek^.Adr2 := nil; end; Procedure DelArr1(Var Beg: Ts1); Var Buf: Ts1; begin While Beg <> nil do begin Buf := Beg^.Adr1; Dispose(Beg); Beg := Buf; end; end; Procedure DelArr2(var Beg: Ts2); Var Buf: Ts2; begin While Beg <> nil do begin Buf := Beg^.Adr2; DelArr1(Beg^.Adr1); Dispose(Beg); Beg := Buf; end; end; Function GetEl1(I: word; Beg: Ts1):Ts1; Var J: Word; begin For J := 1 to (I - 1) do Beg := Beg^.Adr1; GetEl1 := Beg; end; Function GetEl2(I,K: word; Beg: Ts2):Ts1; Var J: word; begin For J := 1 to (I - 1) do Beg := Beg^.Adr2; GetEl2 := GetEl1(K, Beg^.Adr1); end; {Procedure OutputMat(Var A : TS2; N, M : word); Begin ClrScr; A := MakeArr2(m, n); For i := 2 to m + 1 do For j := 2 to n + 1 do Begin GotoXY(i * 7 - 1, j * 3 - 1); Write(GetEl2(i - 1, j - 1, A)^.inf ); End; End;} begin clrscr; textcolor(15); writeln('vvedite n: '); readln(n); A := MakeArr2(n, n+1); For i := 1 to n do For j := 1 to (n+1) do Begin Write('A[', i, ', ', j, ']='); Readln(GetEl2(i, j, A)^.inf); End; writeln;writeln;writeln;writeln; Writeln('Vvedennaya matrica: '); For k:= 1 to n do For h:= 1 to (n+1) do begin Writeln(GetEl2(k,h,A)^.inf); end; readln; DelArr2(A); end.