Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program kontrolnaya_1;
- uses
- SysUtils;
- type
- TArr = Array of Array of Integer;
- function InputArr() : TArr;
- var
- AArr: TArr;
- N, N1, M, M1, i, j: Integer;
- begin
- writeln('Quantiy of rows:');
- readln(N);
- writeln('Quantiy of columns:');
- readln(M);
- SetLength(AArr, N, M);
- N1 := N - 1;
- M1 := M - 1;
- for i := 0 to N1 do
- for j := 0 to M1 do
- begin
- writeln('Input Element [', i + 1, '][', j + 1, ']:');
- readln(AArr[i][j]);
- end;
- Result := AArr;
- end;
- procedure SortArrayOnes(AArr: TArr);
- var
- i, j, LC, HC, LR, HR, N, M, Way, NumberOfElementNow, CoordinateOfNext1, CoordinateOfNext2, QuantityOfElem: Integer;
- IfWas : Boolean;
- begin
- Way := 1;
- N := Length(AArr);
- M := Length(AArr[0]);
- LR := 0;
- HR := N - 1;
- LC := 0;
- HC := M - 1;
- QuantityOfElem := N * M;
- NumberOfElementNow := 1;
- while (NumberOfElementNow < QuantityOfElem) do
- begin
- IfWas := false;
- if (Way = 1) then
- begin
- i := LC;
- while((i <= HC) and (NumberOfElementNow < QuantityOfElem)) do
- begin
- if (i = HC) then
- begin
- CoordinateOfNext1 := LR + 1;
- CoordinateOfNext2 := i;
- end
- else
- begin
- CoordinateOfNext1 := LR;
- CoordinateOfNext2 := i + 1;
- end;
- if (AArr[LR][i] > AArr[CoordinateOfNext1][CoordinateOfNext2]) then
- begin
- AArr[LR][i] := AArr[LR][i] + AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[CoordinateOfNext1][CoordinateOfNext2] := AArr[LR][i] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[LR][i] := AArr[LR][i] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- end;
- Inc(NumberOfElementNow);
- Inc(i);
- end;
- Way := 2;
- Inc(LR);
- IfWas := true;
- end;
- if ((Way = 2) and not IfWas) then
- begin
- i := LR;
- while((i <= HR) and (NumberOfElementNow < QuantityOfElem)) do
- begin
- if (i = HR) then
- begin
- CoordinateOfNext1 := i;
- CoordinateOfNext2 := HC - 1;
- end
- else
- begin
- CoordinateOfNext1 := i + 1;
- CoordinateOfNext2 := HC;
- end;
- if (AArr[i][HC] > AArr[CoordinateOfNext1][CoordinateOfNext2]) then
- begin
- AArr[i][HC] := AArr[i][HC] + AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[CoordinateOfNext1][CoordinateOfNext2] := AArr[i][HC] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[i][HC] := AArr[i][HC] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- end;
- Inc(NumberOfElementNow);
- Inc(i);
- end;
- Way := 3;
- Dec(HC);
- IfWas := true;
- end;
- if ((Way = 3) and not IfWas) then
- begin
- i := HC;
- while((i >= LC) and (NumberOfElementNow < QuantityOfElem)) do
- begin
- if (i = LC) then
- begin
- CoordinateOfNext1 := HR - 1;
- CoordinateOfNext2 := i;
- end
- else
- begin
- CoordinateOfNext1 := HR;
- CoordinateOfNext2 := i - 1;
- end;
- if (AArr[HR][i] > AArr[CoordinateOfNext1][CoordinateOfNext2]) then
- begin
- AArr[HR][i] := AArr[HR][i] + AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[CoordinateOfNext1][CoordinateOfNext2] := AArr[HR][i] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[HR][i] := AArr[HR][i] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- end;
- Inc(NumberOfElementNow);
- Dec(i);
- end;
- Way := 4;
- Dec(HR);
- IfWas := true;
- end;
- if ((Way = 4) and not IfWas) then
- begin
- i := HR;
- while((i >= LR) and (NumberOfElementNow < QuantityOfElem)) do
- begin
- if (i = LR) then
- begin
- CoordinateOfNext1 := i;
- CoordinateOfNext2 := LC + 1;
- end
- else
- begin
- CoordinateOfNext1 := i - 1;
- CoordinateOfNext2 := LC;
- end;
- if (AArr[i][LC] > AArr[CoordinateOfNext1][CoordinateOfNext2]) then
- begin
- AArr[i][LC] := AArr[i][LC] + AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[CoordinateOfNext1][CoordinateOfNext2] := AArr[i][LC] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- AArr[i][LC] := AArr[i][LC] - AArr[CoordinateOfNext1][CoordinateOfNext2];
- end;
- Inc(NumberOfElementNow);
- Dec(i);
- end;
- Way := 1;
- Inc(LC);
- end;
- end;
- end;
- procedure OutputArr(AArr: TArr);
- var
- i, j: Integer;
- begin
- for i := 0 to (Length(AArr) - 1) do
- begin
- for j := 0 to (Length(AArr[0]) - 1) do
- begin
- write(AArr[i][j], ' ');
- end;
- writeln;
- end;
- writeln;
- end;
- procedure SortArray(AArr: TArr);
- var
- i, N, M, QuantityOfNumbers: Integer;
- begin
- N := Length(AArr);
- M := Length(AArr[0]);
- QuantityOfNumbers := N * M;
- for i := 2 to QuantityOfNumbers do
- SortArrayOnes(AArr);
- end;
- var
- AArr: TArr;
- begin
- AArr := InputArr();
- OutputArr(AArr);
- SortArray(AArr);
- OutputArr(AArr);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment