Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. program PrWork;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils;
  7.  
  8. type
  9. TIntArray = Array of Integer;
  10. TMatrix = Array of Array of Integer;
  11.  
  12. function ReadCheckedNumber(LowBorder, HighBorder: Integer): Integer;
  13. var
  14. InputNumber: Integer;
  15. IsCorrectInput: Boolean;
  16. begin
  17. IsCorrectInput := false;
  18. Writeln('Enter a whole number between ', LowBorder, ' and ', HighBorder);
  19. repeat
  20. try
  21. Readln(InputNumber);
  22. if (InputNumber > LowBorder) and (InputNumber < HighBorder) then
  23. IsCorrectInput := true
  24. else
  25. Writeln('Input error. Please enter a whole number between ', LowBorder, ' and ', HighBorder);
  26. except
  27. Writeln('Input error. Please enter a whole number between ', LowBorder, ' and ', HighBorder);
  28. end;
  29. until(IsCorrectInput);
  30. ReadCheckedNumber := InputNumber;
  31. end;
  32.  
  33. function ReadMatrix(): TMatrix;
  34. var
  35. j, i, MatrixSize: Integer;
  36. InputMatrix: TMatrix;
  37. begin
  38. Writeln('Please enter size of the matrix');
  39. MatrixSize := ReadCheckedNumber(2, 6);
  40. SetLength(InputMatrix, MatrixSize, MatrixSize);
  41. for j := 0 to High(InputMatrix) do
  42. for i := 0 to High(InputMatrix[j]) do
  43. begin
  44. Writeln('Please enter the element [', j, '] [', i, ']');
  45. ReadCheckedNumber(-10000, 10000);
  46. end;
  47.  
  48. end;
  49.  
  50. function FindNumbers(InputMatrix: TMatrix; Sign: Integer): TIntArray;
  51. var
  52. IntSequence: TIntArray;
  53. i, j, k: Integer;
  54. begin
  55. k := 0;
  56. SetLength(IntSequence, 1);
  57. if (Sign = -1) then
  58. begin
  59. for j := 0 to High(InputMatrix) do
  60. for i := 0 to High(InputMatrix[j]) do
  61. if (InputMatrix[j,i] < 0) then
  62. begin
  63. IntSequence[k] := InputMatrix[j,i];
  64. Writeln(IntSequence[k]);
  65. SetLength(IntSequence, Length(IntSequence) + 1);
  66. inc(k);
  67. end
  68. end
  69. else
  70. if (Sign = 1) then
  71. begin
  72. for j := 0 to High(InputMatrix) do
  73. for i := 0 to High(InputMatrix[j]) do
  74. if (InputMatrix[j,i] > 0) then
  75. begin
  76. IntSequence[k] := InputMatrix[j,i];
  77. Writeln(IntSequence[k]);
  78. SetLength(IntSequence, Length(IntSequence) + 1);
  79. inc(k);
  80. end
  81. end
  82. else
  83. if (Sign = 0) then
  84. begin
  85. for j := 0 to High(InputMatrix) do
  86. for i := 0 to High(InputMatrix[j]) do
  87. if (InputMatrix[j,i] = 0) then
  88. begin
  89. IntSequence[k] := InputMatrix[j,i];
  90. Writeln(IntSequence[k]);
  91. SetLength(IntSequence, Length(IntSequence) + 1);
  92. inc(k);
  93. end
  94. end;
  95. FindNumbers := IntSequence;
  96. end;
  97.  
  98. procedure OutArray(NeededArray: TIntArray);
  99. var
  100. i: Integer;
  101. begin
  102. for i := 0 to High(NeededArray) do
  103. Writeln(NeededArray[i], ' ');
  104. end;
  105.  
  106. var
  107. NegativeNums, PositiveNums, Zeros: TIntArray;
  108. FullMatrix: TMatrix;
  109. begin
  110. Writeln('This program divides a matrix of whole numbers into three arrays containing only zero, negative and positive numbers.');
  111. FullMatrix := ReadMatrix();
  112. NegativeNums := FindNumbers(FullMatrix, -1);
  113. PositiveNums := FindNumbers(FullMatrix, 1);
  114. Zeros := FindNumbers(FullMatrix, 0);
  115. Writeln('Negative numbers: ');
  116. OutArray(NegativeNums);
  117. Writeln('Positive numbers: ');
  118. OutArray(PositiveNums);
  119. Writeln('Zeros: ');
  120. OutArray(Zeros);
  121. Readln;
  122. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement