Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program PrWork;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- type
- TIntArray = Array of Integer;
- TMatrix = Array of Array of Integer;
- function ReadCheckedNumber(LowBorder, HighBorder: Integer): Integer;
- var
- InputNumber: Integer;
- IsCorrectInput: Boolean;
- begin
- IsCorrectInput := false;
- Writeln('Enter a whole number between ', LowBorder, ' and ', HighBorder);
- repeat
- try
- Readln(InputNumber);
- if (InputNumber > LowBorder) and (InputNumber < HighBorder) then
- IsCorrectInput := true
- else
- Writeln('Input error. Please enter a whole number between ', LowBorder, ' and ', HighBorder);
- except
- Writeln('Input error. Please enter a whole number between ', LowBorder, ' and ', HighBorder);
- end;
- until(IsCorrectInput);
- ReadCheckedNumber := InputNumber;
- end;
- function ReadMatrix(): TMatrix;
- var
- j, i, MatrixSize: Integer;
- InputMatrix: TMatrix;
- begin
- Writeln('Please enter size of the matrix');
- MatrixSize := ReadCheckedNumber(2, 6);
- SetLength(InputMatrix, MatrixSize, MatrixSize);
- for j := 0 to High(InputMatrix) do
- for i := 0 to High(InputMatrix[j]) do
- begin
- Writeln('Please enter the element [', j, '] [', i, ']');
- ReadCheckedNumber(-10000, 10000);
- end;
- end;
- function FindNumbers(InputMatrix: TMatrix; Sign: Integer): TIntArray;
- var
- IntSequence: TIntArray;
- i, j, k: Integer;
- begin
- k := 0;
- SetLength(IntSequence, 1);
- if (Sign = -1) then
- begin
- for j := 0 to High(InputMatrix) do
- for i := 0 to High(InputMatrix[j]) do
- if (InputMatrix[j,i] < 0) then
- begin
- IntSequence[k] := InputMatrix[j,i];
- Writeln(IntSequence[k]);
- SetLength(IntSequence, Length(IntSequence) + 1);
- inc(k);
- end
- end
- else
- if (Sign = 1) then
- begin
- for j := 0 to High(InputMatrix) do
- for i := 0 to High(InputMatrix[j]) do
- if (InputMatrix[j,i] > 0) then
- begin
- IntSequence[k] := InputMatrix[j,i];
- Writeln(IntSequence[k]);
- SetLength(IntSequence, Length(IntSequence) + 1);
- inc(k);
- end
- end
- else
- if (Sign = 0) then
- begin
- for j := 0 to High(InputMatrix) do
- for i := 0 to High(InputMatrix[j]) do
- if (InputMatrix[j,i] = 0) then
- begin
- IntSequence[k] := InputMatrix[j,i];
- Writeln(IntSequence[k]);
- SetLength(IntSequence, Length(IntSequence) + 1);
- inc(k);
- end
- end;
- FindNumbers := IntSequence;
- end;
- procedure OutArray(NeededArray: TIntArray);
- var
- i: Integer;
- begin
- for i := 0 to High(NeededArray) do
- Writeln(NeededArray[i], ' ');
- end;
- var
- NegativeNums, PositiveNums, Zeros: TIntArray;
- FullMatrix: TMatrix;
- begin
- Writeln('This program divides a matrix of whole numbers into three arrays containing only zero, negative and positive numbers.');
- FullMatrix := ReadMatrix();
- NegativeNums := FindNumbers(FullMatrix, -1);
- PositiveNums := FindNumbers(FullMatrix, 1);
- Zeros := FindNumbers(FullMatrix, 0);
- Writeln('Negative numbers: ');
- OutArray(NegativeNums);
- Writeln('Positive numbers: ');
- OutArray(PositiveNums);
- Writeln('Zeros: ');
- OutArray(Zeros);
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement