venik2405

lab3_3_1

Dec 16th, 2020
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.37 KB | None | 0 0
  1. Program lab3_3;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   System.SysUtils;
  7.  
  8. Type
  9.     TArray = array of array of array of Integer;
  10.  
  11. Function InputFileLocation(): string;
  12. Var
  13.     IsCorrect: Boolean;
  14.     Location: String;
  15. Begin
  16.     Repeat
  17.         IsCorrect := false;
  18.         WriteLn('Enter file location:');
  19.         ReadLn(Location);
  20.         If FileExists(Location) then
  21.             IsCorrect := true
  22.         Else
  23.         Begin
  24.             WriteLn('Please enter the correct location');
  25.             WriteLn('');
  26.         End;
  27.     Until IsCorrect;
  28.     InputFileLocation := Location;
  29. End;
  30.  
  31. Procedure GetArrayFromConsole(Arrays: TArray; Size: Integer);
  32. Var
  33.     I, J, Temp: Integer;
  34.     IsCorrect: Boolean;
  35.     K: Integer;
  36. Begin
  37.     WriteLn('Enter the matrix');
  38.     Temp := (Size - 1);
  39.     For I := 0 to Temp do
  40.         For J := 0 to Temp do
  41.             for K := 0 to Temp do
  42.                 Repeat
  43.                     IsCorrect := false;
  44.                     WriteLn('Enter element number [', I + 1, '|' ,  J + 1, '|', K + 1, ']');
  45.                     Try
  46.                         ReadLn(Arrays[I, J, K]);
  47.                         IsCorrect := true;
  48.                     Except
  49.                         WriteLn('Enter the Number')
  50.                     End;
  51.                 Until IsCorrect;
  52. End;
  53.  
  54. Function ChooseInput(): Integer;
  55. Var
  56.     Line: String;
  57.     IsCorrect: Boolean;
  58. Begin
  59.     Repeat
  60.         IsCorrect := true;
  61.         WriteLn('Do you want to input from file? (y/n)');
  62.         ReadLn(line);
  63.         Line := Line.ToLower();
  64.         If(Line <> '') and (Line <> 'y') and (Line <> 'n') then
  65.         Begin
  66.             IsCorrect := false;
  67.             WriteLn('Enter valid answer');
  68.         End;
  69.     Until IsCorrect;
  70.     If (Line = '') or (Line = 'y') then
  71.         ChooseInput := 0
  72.     Else
  73.         ChooseInput := 1;
  74. End;
  75.  
  76. Procedure GetArrayFromFile(Size: Integer; Arrays: TArray);
  77. Var
  78.     TxtFile: TextFile;
  79.     I, J, Temp: Integer;
  80.   K: Integer;
  81. Begin
  82.     Temp := Size - 1;
  83.     AssignFile(TxtFile, InputFileLocation());
  84.     Reset(TxtFile);
  85.     For I := 0 to Temp do
  86.     Begin
  87.         For J := 0 to Temp do
  88.         Begin
  89.             For K := 0 to Temp do
  90.                 Read(TxtFile, Arrays[I, J, K]);
  91.             ReadLn(TxtFile);
  92.         End;
  93.         Readln(TxtFile);
  94.     End;
  95.     SetLength(Arrays, Temp);
  96.     CloseFile(TxtFile);
  97. End;
  98.  
  99. Procedure ResultPrint(Arrays: TArray; Time: Integer);
  100. Var
  101.     I, J, K, Temp: Integer;
  102. Begin
  103.     Writeln('Iteraration number', Time);
  104.     Writeln('__________________');
  105.     for I := 0 to High(Arrays) do
  106.     Begin
  107.         Writeln('Slay number ', I + 1);
  108.         for J := 0 to High(Arrays) do
  109.         Begin
  110.             For K := 0 to High(Arrays) do
  111.             Begin
  112.                 Write(arrays[I, J, K], ' ');
  113.             End;
  114.             Writeln;
  115.         End;
  116.         Writeln;
  117.     End;
  118. End;
  119.  
  120.  
  121. Procedure OutputToFile(Arrays: TArray; Size: Integer);
  122. Var
  123.     I, J, K, Temp: Integer;
  124.     TxtFile: TextFile;
  125.     Line: String;
  126. Begin
  127.     Temp := Size - 1;
  128.     AssignFile(TxtFile, InputFileLocation());
  129.     Rewrite(TxtFile);
  130.     Begin
  131.         For I := 0 to Temp do
  132.         Begin
  133.             For J := 0 to Temp do
  134.             Begin
  135.                 for K := 0 to Temp do
  136.                     Write(TxtFile, Arrays[I, J, K], ' ');
  137.                 writeln;
  138.             End;
  139.             Writeln;
  140.         End;
  141.         CloseFile(TxtFile);
  142.     End;
  143. End;
  144.  
  145. Procedure SortMatrix(Arrays: TArray; Size: Integer);
  146. Var
  147.     I, J, K, I1, J1, K1, Temp, Up, Time:Integer;
  148. Begin
  149.     Up := Size - 1;
  150.     Time := 0;
  151.     for I := 0 to Up do
  152.         for J := 0 to Up do
  153.             for K := 0 to Up do
  154.                 for I1 := 0 to Up do
  155.                     for J1 := 0 to Up do
  156.                         for K1 := 0 to Up do
  157.                             if Arrays[I1, J1, K1] > Arrays[I, J, K] then
  158.                             Begin
  159.                                 Temp := Arrays[I1, J1, K1];
  160.                                 Arrays[I1, J1, K1] := Arrays[I, J, K];
  161.                                 Arrays[I, J, K] := Temp;
  162.                                 Inc(Time);
  163.                                 ResultPrint(Arrays, Time);
  164.                             End;
  165. End;
  166.  
  167. Function DimensionInput(IsNatural: Boolean = false): Integer;
  168. Var
  169.     IsCorrect: Boolean;
  170.     Size: Integer;
  171. Begin
  172.     Size := 0;
  173.     WriteLn('Enter the matrix size');
  174.     Repeat
  175.         IsCorrect := false;
  176.         Try
  177.            ReadLn(Size);
  178.            IsCorrect := true;
  179.         Except
  180.            WriteLn('Enter the Number')
  181.         End;
  182.         If IsCorrect and IsNatural and (Size < 1) then
  183.         Begin
  184.            IsCorrect := false;
  185.            WriteLn('Please enter a natural value');
  186.         End;
  187.     Until IsCorrect ;
  188.     DimensionInput := Size;
  189. End;
  190.  
  191. Procedure Main();
  192. Var
  193.     ChosenInput: Integer;
  194.     MatrixArray: TArray;
  195.     Size : Integer;
  196. Begin
  197.     WriteLn('This program sorts a three-dimensional array in ascending order.');
  198.     Size := DimensionInput(true);
  199.     ChosenInput := ChooseInput();
  200.     SetLength(MatrixArray, Size, Size, Size);
  201.     If(ChosenInput = 0) then
  202.         GetArrayFromFile(Size, MatrixArray)
  203.     Else
  204.         GetArrayFromConsole(MatrixArray, Size);
  205.     WriteLn;
  206.     Writeln('Sorted Matrix:');
  207.     SortMatrix(MatrixArray, Size);
  208.     OutputToFile(MatrixArray, Size);
  209.     ReadLn;
  210. End;
  211.  
  212. Begin
  213.     Main();
  214. End.
  215.  
Add Comment
Please, Sign In to add comment